Генерация байта строки с заданным размером c - PullRequest
1 голос
/ 06 мая 2020

У меня есть этот код, который генерирует 80 байтов слова «Администратор» для вывода ниже.

 szOperatorName = BitConverter.ToString(data, 45, data.Length - 45); //szOperatorName is set to 'Administrator'
byte[] OperatorName = new byte[80];

Array.Copy(Encoding.ASCII.GetBytes(szOperatorName), OperatorName, System.Math.Min(80,szOperatorName.Length));

ВЫХОД

41 64 6D 69 6E 69 73 74 72 61 74 6F 72 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

ОЖИДАЕМЫЙ ВЫХОД

41 00 64 00 6d 00 69 00 6e 00 69 00 73 00 74 00 72 00 61 00 74 00 6f 00 72 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Я выделил некоторые из основных различий между двумя, любая помощь в получении ожидаемого результата будет очень признательна

1 Ответ

1 голос
/ 06 мая 2020

Чтобы получить ожидаемый результат, используйте кодировку Unicode для получения байтов

Encoding.Unicode.GetBytes(szOperatorName)

Test

byte[] bytes = System.Text.Encoding.Unicode.GetBytes("Administrator");
foreach (var b in bytes)
    Console.WriteLine(b);

. . . .
Array.Copy(bytes, newArr, bytes.Length);

ваш текущий результат основан на кодировке ASCII (очевидно)

...