запись int в байты со значением больше 255 - PullRequest
0 голосов
/ 28 октября 2018

проблема в том, что я пытаюсь проанализировать двоичный файл.тогда я вроде застрял, как преобразовать int в байт со значением больше 255, например, у меня есть 0x17b, как я могу исправить это как байты в файле?

при проверке двоичного файла я заметил, что 0x17b равен0xfb 0x02 (в байтах), как это случилось?

в c #, я попытался

Convert.ToByte(search.Length)

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

вот еще один пример для справки

0x107 = 0x87 0x02 (in bytes)
0x17B = 0xFB 0x02 (in bytes)
0xAD = 0xAD 0x01 (in bytes)

1 Ответ

0 голосов
/ 30 октября 2018

Вы не можете преобразовать значение больше 255 в байт, так как это наибольшее значение, которое может быть сохранено в одном байте.Что вам нужно сделать, это преобразовать в массив байтов.Для этого вы можете использовать BitConverter для выполнения работы:

int bigValue = 0x17b;
byte[] bytes = BitConverter.GetBytes(bigValue);

Поскольку int здесь составляет 4 байта, то в итоге вы получите 7B 01 00 00 как представление этого значения в байтах.

...