2012-05-11 6 views
10

Jak mogę przekonwertować ten ciąg na bajt?Jak przekonwertować ciąg na bajt w języku C#?

string a = "0x2B"; 

Próbowałem tego kodu, (bajt) (a); ale on powiedział:

Nie można przekonwertować typu ciąg bajtów ...

A kiedy próbowałem ten kod, Convert.ToByte(a); i ten byte.Parse(a);, to powiedział:

ciąg wejściowy nie było w poprawnym formacie ...

Jaki jest prawidłowy kod?

Ale kiedy jestem deklarując je na przykład w tablicy, to jest do zaakceptowania ...

Na przykład:

byte[] d = new byte[1] = {0x2a}; 

Odpowiedz

13

musisz określić baza do użycia w Convert.ToByte s Ince ciąg wejściowy zawiera szereg hex:

byte b = Convert.ToByte(a, 16); 
2

Aktualizacja:

Jak wspominają inni, mój oryginalna propozycja użycia byte.Parse() z NumberStyles.HexNumber faktycznie nie będzie działać z ciągami szesnastkowymi z prefiksem "0x". Najlepszym rozwiązaniem jest użycie Convert.ToByte(a, 16), jak sugerują inne odpowiedzi.

Oryginalny odpowiedź:

Spróbuj użyć następujących czynności:

byte b = byte.Parse(a, NumberStyles.HexNumber, CultureInfo.InvariantCulture); 
+0

nie będzie pracować z '0x' prefiksu. – Douglas

+0

Spowoduje to wyjątek, jeśli ciąg stanie się równy 'Pie', powinieneś szczegółowo opisać, jak tego uniknąć. Jak wyjaśnia Douglas, nie będzie to również działać z 'Ox', biorąc pod uwagę, że' x' nie jest poprawne w tym kontekście. –

1

Można użyć UTF8Encoding:

public static byte[] StrToByteArray(string str) 
{ 
    System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding(); 
    return encoding.GetBytes(str); 
} 
+1

Źle zrozumiałeś pytanie. – jason

+0

wydaje się, że ... – Frederic

+0

Możesz wtedy usunąć swoją odpowiedź. –

Powiązane problemy