2014-10-17 68 views
-4
int value = Convert.ToInt32('o'); 
Byte[] b = new Byte[] { (byte)value }; 
File.WriteAllBytes(Default.ProjectsPath , b); 

當我打開文件時它顯示o,我想寫字節值到文件中?將十六進制字符串轉換爲整數

+2

什麼是例外?在哪一行?什麼是「價值」?什麼是你的「CurrentCulture」? – 2014-10-17 11:27:20

回答

2

刪除0x然後將其轉換:

int i = Convert.ToInt32("0xFE".Substring(2), 16); 
+0

,給我i = 254 我想i = 0xFE – 2014-10-17 11:34:56

+0

是的,FE是254十進制... – 2014-10-17 11:35:34

+0

您原來的'String.Format(「0x {0:X}」,254);'做到這一點,不是嗎? – 2014-10-17 11:36:57

0

Convert.ToInt16(string)將無法​​轉換與加「0x」開頭的字符串,即使這對基地16個數字正確的符號。如果你想使用你的解決方案,你需要從字符串轉換中去掉「0x」。更換

string s=String.Format("0x{0:X}", value); 

​​

或者你可以用K.亞歷克斯的想法和替換

int x=Convert.ToInt16(s); 

int x=Convert.ToInt16(s.Substring(2)); 
0

如果你是一個生產字符串在第一個地方,然後像Alex Barac建議,不要放置一個0x前綴...(爲什麼創建你不需要的問題)

如果你必須有前綴,使用它...如果前綴是'0x'使用
int i = Convert.ToInt32("0xFE".Substring(2), 16);亞歷克斯K.建議

如果不加 '0x',那麼它probobally一個Base10號:
int i = Convert.ToInt32("342", 10);

相關問題