Member 11117644 Ответов: 3

Кодировка строки в байты добавляет ненужные "00"с


Хороший день,

У меня есть 16-байтовая строка, которую я кодирую в байты, а затем немедленно преобразую ее в читаемую шестнадцатеричную строку. В результате он добавил 00 после каждого шестнадцатеричного числа, и я, кажется, не могу понять, почему.

Моя Струна:
var message1 = "Thats my Kung Fu";

Преобразование:
var stringToByte = Encoding.Unicode.GetBytes(message1);
var stringByte = BitConverter.ToString(stringToByte);

И вот результат::
54 00 68 00 61 00 74 00 73 00 20 00 6D 00 79 00 20 00 4B 00 75 00 6E 00 67 00 20 00 46 00 75 00

Ожидаемый итог:
54 68 61 74 73 20 6D 79 20 4B 75 6E 67 20 46 75


Почему он так себя ведет? Есть ли способ кодировать байты без 00? Пожалуйста, укажи мне правильное направление. Я попытался найти похожую проблему в интернете (или это не проблема?), но не смог найти ничего связанного.

Спасибо

Что я уже пробовал:

Я попытался найти похожие проблемы, но не смог найти связанные с ними проблемы.

3 Ответов

Рейтинг:
1

phil.o

var stringToByte = Encoding.UTF8.GetBytes(message1);
или
var stringToByte = Encoding.ASCII.GetBytes(message1);
оба они дадут вам тот результат, которого вы ожидаете.


Рейтинг:
0

Dave Kreskowiak

Вы использовали кодировку Unicode для получения байтов.

Это не та ложь, которую вы ожидаете, вероятно, потому, что вы понятия не имеете, что такое Unicode. Я предлагаю прочитать его здесь: Что такое Юникод?[^].