2017-01-28 2 views
0

Как преобразовать массив байт в беззнаковом полукокс (0 до 255, а не -127 до 127)BitConverter uchar?

Если я не ошибаюсь, BitConverter имеет только BitConverter.ToChar, который не дает мне результат я находясь в поиске.

спасибо.

+1

@ DanielA.White Nah, то, что называется «System.Char» в .NET, является блоком кода UTF-16, который состоит из шестнадцати бит. Конечно, это может быть нижняя или верхняя часть суррогатной пары, или она может кодировать комбинирующий символ. Но 'Char' в .NET не 8 бит. –

+0

Какие типы вы просите? Подписанные 8-битные целые числа называются 'sbyte' в C# (' System.SByte' в рамках). Неподписанные 8-битные целые числа называются 'byte' (' System.Byte'). Вы говорите char, но в C# ключевое слово 'char' используется для блока кода UTF-16, диапазон которого от' 0' до '65535'. –

ответ

1

Массив байтов (byte[]) уже является массивом элементов с 0 по 255. char s в .NET являются многобайтными, поскольку они являются Unicode. В .NET нет такой вещи, как uchar.

0

Вы можете преобразовать массив байтов в строку

string str = System.Text.Encoding.ASCII.GetString(bytes); 

или гипсе/конвертировать их в char:

char[] chars = Array.ConvertAll(bytes, Convert.ToChar); 
+1

'Encoding.ASCII' полезен, если все байты находятся в диапазоне от 0 до 127. В противном случае выберите «кодовую страницу», такую ​​как 'string str = (новый System.Text.Encoding (« Windows-1252 »)). GetString (bytes);'. –

1

Это зависит от вашего использования. BitConverter.ToCharis used to convert 2 байта от вашего байтового массива до символа Юникода (подумайте об этом как о десериализации). В .NET data type is used to представляют собой символ Unicode, поэтому он содержит 2 байта.

Если ваша цель состоит в том, чтобы просто получить массив целых чисел от 0 до 255, ваш байт-массив именно то, что вам нужно.

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