2010-10-11 5 views
1

Ну, мой вопрос прост и понятен.В любом случае мы можем работать с шестнадцатеричными байтами и символами, например, в C++?

Можно ли использовать шестнадцатеричные значения, например, в C++?

Я собираюсь писать двоичные файлы, но для этого мне нужно будет определить определенные символы, подобные этому, например.

\ x00 \ x00 \ x11 \ x22 \ x33 \ x00 \ x00

я в первую очередь необходимо преобразовать такие вещи, как это в массив байтов, а затем записать его в двоичный текстовый файл.

Спасибо!

+0

Возможный дубликат [http://stackoverflow.com/questions/1335700/vb-net-hexadecimal-to-8-bit-unsigned-array]. –

ответ

3

Нет, это проблема с современными компиляторами, такими как VB.NET. Нет однозначного сопоставления между байтами и строками, когда Unicode стал предпочтительным способом обработки текста. Codepoints, такие как 0x80, не имеют соответствующего символа, он будет переназначаться при преобразовании строки в байты.

Вам понадобится работать с массивом Byte() в коде. Точный эквивалент для вашего примера:

Dim data As Byte() = {&H0, &H0, &H11, &H22, &H33, &H0, &H0} 
+0

+1 @zeta, вы указали * двоичный текстовый файл * в своем вопросе. Если это * двоичный * файл, вам нужно рассматривать его как двоичный файл - не пытайтесь использовать строки для хранения двоичных данных. – MarkJ

0

Здесь есть еще одна статья о преобразовании строк HEX char в массив байтов.

How can I convert a hex string to a byte array?

Положи в метод расширения, который расширяет класс STRING:

http://msdn.microsoft.com/en-us/library/bb384936.aspx

И вы могли бы в конечном итоге с линией кода вида:

Dim Bytes() = "\x00\x00\x11\x22\x33\x00\x00".ToBytes 

Который довольно dang близко к чувствую встроенный.

Смежные вопросы