2011-10-24 32 views
8

Powiel możliwe:
How do you convert Byte Array to Hexadecimal String, and vice versa, in C#?
Convert hex string to byte arrayString do tablicy bajtów

Mam ciąg tak: "021500010000146DE6D800000000000000003801030E9738"

Co potrzebne jest następujące tablica bajtowa: 02 15 00 01 00 00 14 6D E6 D 8 00 00 00 00 00 00 00 38 01 03 0E 97 38 (każda para liczb jest wartością szesnastkową w odpowiednim bajcie).

Jakieś pojęcie o tym, jak mogę dokonać tej konwersji? Dzięki!!

+0

Czy można napisać coś zrobić? –

+1

"Możliwy duplikat" to zupełnie inne pytanie. Nie pyta, jak zakodować ciąg do 'byte []' za pomocą kodowania. Ciąg zawiera wartości szesnastkowe, które powinny zostać przekonwertowane na 'byte []'. – svick

+0

Nie widzę, jak te pytania są dokładnymi duplikatami. – vcsjones

Odpowiedz

5
var arr = new byte[s.Length/2]; 
for (var i = 0 ; i<arr.Length ; i++) 
    arr[i] = (byte)Convert.ToInt32(s.SubString(i*2,2), 16); 
+0

Ten kod działa naprawdę dobrze. Ale tylko szczegół, właściwy kod to "Sstring". Dziękuję wszystkim. – Manu

+0

Może używać Convert.ToByte zamiast ToInt32. – mikeazo

1

Prawie chcesz drugi przykład tego page.
Ważną częścią jest:

Convert.ToInt32(hex, 16); 

Pierwszym parametrem jest łańcuchem dwóch znaków, określających wartość hex (np "DE").
Drugi parametr określa konwersję z bazy-16, która jest Hex.

Dzielenie łańcucha na segmenty dwuznakowe nie jest pokazane w przykładzie, ale jest potrzebne dla Twojego problemu. Ufam, że jest na tyle prosty, że możesz sobie z nim poradzić.

Znalazłem to z Google: "C# parse hex"

1
string str = "021500010000146DE6D800000000000000003801030E9738"; 
    List<byte> myBytes = new List<byte>(); 

    try 
    { 
     while (!string.IsNullOrEmpty(str)) 
     { 
      myBytes.Add(Convert.ToByte(str.Substring(0, 2), 16)); 
      str = str.Substring(2); 
     } 
    } 
    catch (FormatException fe) 
    { 
     //handle error 
    } 
    for(int i = 0; i < myBytes.Count; i++) 
    { 
     Response.Write(myBytes[i].ToString() + "<br/>"); 
    } 
+0

'Convert.ToByte' na "int"? Chodzi o to, że przedwczesna optymalizacja jest zła i wszystkiego, ale kiedy najprostsze podejście jest również szybsze ... –

+0

@BenVoigt Ah, znalazłem tę właściwą funkcję do zrobienia w jednej konwersji. Dzięki! –

Powiązane problemy