2014-11-25 4 views
1

Я написал кусок кода, который возвращает байт-код любого символа, который показан нижеПреобразование байт-кода обратно в char в C# win. Форма

string ByteCodeValue = Convert.ToString((char)65533, 2).PadLeft(8, '0'); 
//which returns value "1111111111111101" 

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

char OldChar= (char)Convert.ToByte("1111111111111101", 2); 

Пожалуйста, скажите мне, где я буду неправильно?

Заранее спасибо

+0

Это не байткодом персонажа, то есть двоичный код этого символа :-) –

+0

65533 превышает byte.maxvalue (255) на довольно много. Использовать char –

+0

Ну, байт имеет до 8 цифр (1 или 0), поэтому значение «1111111111111101» не является байтовым представлением символа. – Kell

ответ

0

Вы преобразующие 16-битное значение без знака, а не байт (8 бит). См. this doc. Попробуйте использовать:

var oldChar = (char)Convert.ToUInt16(ByteCodeValue,2); 
+0

спасибо, сэр, это была именно то, что я искал – newbee

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