Как преобразовать массив байт в беззнаковом полукокс (0 до 255, а не -127 до 127)BitConverter uchar?
Если я не ошибаюсь, BitConverter
имеет только BitConverter.ToChar
, который не дает мне результат я находясь в поиске.
спасибо.
Как преобразовать массив байт в беззнаковом полукокс (0 до 255, а не -127 до 127)BitConverter uchar?
Если я не ошибаюсь, BitConverter
имеет только BitConverter.ToChar
, который не дает мне результат я находясь в поиске.
спасибо.
Массив байтов (byte[]
) уже является массивом элементов с 0 по 255. char
s в .NET являются многобайтными, поскольку они являются Unicode. В .NET нет такой вещи, как uchar
.
Вы можете преобразовать массив байтов в строку
string str = System.Text.Encoding.ASCII.GetString(bytes);
или гипсе/конвертировать их в char
:
char[] chars = Array.ConvertAll(bytes, Convert.ToChar);
'Encoding.ASCII' полезен, если все байты находятся в диапазоне от 0 до 127. В противном случае выберите «кодовую страницу», такую как 'string str = (новый System.Text.Encoding (« Windows-1252 »)). GetString (bytes);'. –
Это зависит от вашего использования. BitConverter.ToChar
is used to convert 2 байта от вашего байтового массива до символа Юникода (подумайте об этом как о десериализации). В .NET data type is used to представляют собой символ Unicode, поэтому он содержит 2 байта.
Если ваша цель состоит в том, чтобы просто получить массив целых чисел от 0 до 255, ваш байт-массив именно то, что вам нужно.
@ DanielA.White Nah, то, что называется «System.Char» в .NET, является блоком кода UTF-16, который состоит из шестнадцати бит. Конечно, это может быть нижняя или верхняя часть суррогатной пары, или она может кодировать комбинирующий символ. Но 'Char' в .NET не 8 бит. –
Какие типы вы просите? Подписанные 8-битные целые числа называются 'sbyte' в C# (' System.SByte' в рамках). Неподписанные 8-битные целые числа называются 'byte' (' System.Byte'). Вы говорите char, но в C# ключевое слово 'char' используется для блока кода UTF-16, диапазон которого от' 0' до '65535'. –