2013-11-01 3 views
2

Я пытаюсь преобразовать строку в массив байтов. Когда я смотрю на отдельные элементы массива байтов, я получаю неожиданные результаты. Например, когда я смотрю на первый элемент, который был «F», я ожидаю, что он будет преобразован в 15, но вместо этого я получаю 102. Есть ли ошибка здесь?Преобразовать строковый элемент в байт

Console.WriteLine("string[0] = " + string[0]); 
Byte[] data = Encoding.ASCII.GetBytes(string); 
Console.WriteLine("data[0] = " + data[0]); 

string[0] = f 
data[0] = 102 
+6

Как вы даже используя переменную с именем 'string'? – musefan

+2

Почему вы ожидаете, что будет 15? Если что-нибудь, я ожидаю [это будет 70] (http://www.asciitable.com/). Также, пожалуйста, напишите полный пример справки о проблеме, прямо сейчас ваш код даже не будет компилироваться. EDIT: спасибо Rik, 102 - 'f', я проверил' F'. –

+2

FYI, 102 - код ascii для нижнего регистра 'f' – Rik

ответ

4

Это ASCII.GetBytes возвращает коды ASCII символов. Он с радостью примет строку "z{}".

Я думаю, вы хотите преобразовать шестнадцатеричную строку в целочисленное значение. Для этого вам нужно Int32.Parse, с параметром NumberStyles - NumberStyles.HexNumber.

string s = "1F"; 
int val = Int32.Parse(s, System.Globalization.NumberStyles.HexNumber); 

val теперь будет 31.

+0

Спасибо, это именно то, что мне нужно. Есть ли способ использовать его для символов? До сих пор я стараюсь не повезло. – Ann

+0

Вы можете использовать метод '.ToString()' для преобразования символа в строку. Затем вы можете разобрать его. Или просто используйте «переключатель» для этих 16 значений (предполагая, что это «0» - «F»). –

2

строчное Р 102. Верхний регистр F 70. Пожалуйста, проверьте http://www.asciitable.com

Когда вы говорите, что вы ожидали 15, я думаю, вы видели F в шестнадцатеричной колонке ...

+0

+1 по ссылке для решения этой проблемы. –

2

Ожидаете ли вы 15, потому что вы посмотрели на что-то вроде asciitable.com и видели, что десятичное значение Hex для значения HEX «F» равно 15?

Десятичное значение для 'f' равно 102 (это часть пути вниз по четвертому столбцу на связанной странице).

0

ваши ожидания не так, ваш код работает отлично, десятичное значение для строчной «Р» 102.

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