Нужно настроить байт [] - PullRequest
       0

Нужно настроить байт []

3 голосов
/ 20 октября 2010

Цель состоит в том, чтобы получить байт [16], где первый элемент имеет шестнадцатеричное значение 55, а второй элемент - шестнадцатеричное значение AA. А остальные 14 имеют шестнадцатеричное значение 0.

Я пытался

byte[] outStream = System.Text.Encoding.UTF8.GetBytes("55 AA 00 00 00 00 00 00 00 00 00 00 00 00 00 00");

но это заполняет байт [] значениями ascii, а не шестнадцатеричными значениями.

Я пытался

  byte[] outStream = new byte[16];
  outStream[0] = byte.Parse("55");
  outStream[1] = byte.Parse("AA");
  for(int i=2; i<16; i++)
  {
    outStream[i] = byte.Parse("00");
  }

но это тоже не работает. Он не дает шестнадцатеричные значения, а целочисленные значения, которые выходят из строя на AA, так как это не синтаксический анализ int.

Любая помощь будет оценена.

Ответы [ 3 ]

12 голосов
/ 20 октября 2010

Вы можете написать шестнадцатеричный целочисленный литерал в C #, добавив к нему префикс 0x:

byte[] result = new byte[16];
result[0] = 0x55;
result[1] = 0xaa;

Байтовые массивы по умолчанию заполнены 0x00, поэтому вам просто нужно установить первые два элемента.

Кроме того, вы можете использовать синтаксис инициализатора массива:

byte[] result = new byte[] { 0x55, 0xaa, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
2 голосов
/ 20 октября 2010
byte[] result = { 0x55, 0xaa, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
2 голосов
/ 20 октября 2010

Вы можете использовать: byte.Parse(hex_byte_string, System.Globalization.NumberStyles.HexNumber);
Или вы также можете использовать: Convert.ToByte(hex_byte_string, 16);

public static byte[] ToByteArray(String HexString)
{
   string hex_no_spaces = HexString.Replace(" ","");
   int NumberChars = hex_no_spaces.Length;
   byte[] bytes = new byte[NumberChars / 2];
   for (int i = 0; i < NumberChars; i+=2)
   {
      bytes[i / 2] = byte.Parse(hex_no_spaces.Substring(i, 2), System.Globalization.NumberStyles.HexNumber);
   }
   return bytes;
}

И использовать это так:

byte[] bytez = ToByteArray("55 AA 00 00 00 00 00 00 00 00 00 00 00 00 00 00");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...