2012-10-31 214 views
4

可能重複:
How do you convert Byte Array to Hexadecimal String, and vice versa, in C#?從字符串文本框十六進制0X字節[] C#

我有一個文本框,在輸入獲取字符串「AA 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF」,我把它分解爲具有的String [],但現在我必須得到一個byte []是這樣的:

byte[] b6 = new byte[20] {0xAA,0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88 ,0x99 ,0xAA ,0xBB,0xCC ,0xDD ,0xEE,0xFF}; 
可以

人建議我該怎麼做。我試圖用Convert.ToByte但我得到的是不可能的誤差轉換Stringbyte.而且我沒有將這些值轉換爲十六進制,僅添加0x每個字節的前面加的字節數組。

+0

它不是一個重複的,因爲我嘗試應用的東西在帖子中說,但我沒有得到我所需要的。如果我使用16解析或十六進制解析我得到其他值,而不是格式0x,但數組字節像值「170,17,...」,所以它轉換十進制17十進制0x11,但我想得到0x11。 – user1788654

+0

@ user1788654,看到我的回答,我解釋瞭如何,只要你想 – 2kay

回答

1
string input = "AA 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF"; 
byte[] bytes = input.Split().Select(s => Convert.ToByte(s, 16)).ToArray(); 
+0

我試過這個解決方案串聯「0X」和字節十六進制表示的,但我沒有得到我想要的東西,我得到的值的字節數組,如「170,17 ,...「所以它轉換11至17,但我想爲0x11我知道,11是十進制17,但我需要的十六進制格式輸入來獲得一個讀者 – user1788654

+0

我需要投入,得到:」在每個比特的額AA 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF」,並在輸出字節數組具有相同的值,只與 「0X」。 – user1788654

+1

@ user1788654,0×11是相同的17。 ..它們只是同一個值(十六進制和十進制)的不同表示,說你想把它作爲0x11是沒有意義的;這只是代碼中使用的符號,在運行時不會表示值作爲0x11或17,但在二進制(00010111)。你究竟想要達到什麼? –

0

您可以使用byte.Parse

byte[] bytes = str.Split().Select(s => byte.Parse(s, NumberStyles.HexNumber)).ToArray(); 

要顯示在十六進制表示使用的ToString覆蓋字節:

foreach (var b in bytes) 
{ 
    Console.WriteLine("0x{0:X}", b); 
    //or Console.WriteLine("0x" + b.ToString("X")); 
} 

您還可以使用 「X」 格式及其string.Format修改。

+0

顯示字節'byte.Parse'解析字符串,因爲默認情況下,不是十六進制小數,所以這是不行的 –

+0

@ 2kay感謝你的表示,但我沒有得到0xAA,但只有AA。我試圖問你如何獲得0xAA格式。所以我打印0xAA不僅AA,因爲我必須得到這個值輸入到另一個程序。 – user1788654

+0

@ user1788654,編輯。好像你可以得到前導「0x」只有:( – 2kay

1

嘗試

int.Parse(hexValue, System.Globalization.NumberStyles.HexNumber); 

的字符串的每一個分裂元素,並將其添加到列表中。

List<Byte> bytes = new List<Byte>(); 
foreach (var splittedValue in hexString.Split(' ')) { 
    bytes.Add(int.Parse(splittedValue, System.Globalization.NumberStyles.HexNumber)); 
} 
return bytes.ToArray(); 
-1

你可以使用tostring功能

+0

這根本不起作用。 –

相關問題