2017-02-13 8 views
0

это моя проблема: мне нужно преобразовать массив байтов в int в C#, на xamarin pcl. Но я судимое это:Преобразование байтового массива в Int в xamarin pcl C#

byte[] fromBoardSerial = new byte[3]; 
fromBoardSerial[0] = 0x04 
fromBoardSerial[1] = 0x93 
fromBoardSerial[2] = 0xe0 

result = BitConverter.ToInt32(fromBoardSerial, 0); 

Решение:

Array.Reverse(fromBoardSerial); //call before conversion 

но результат является: -527236096 ... Вместо .. правильный результат должен быть: 300000 Как преобразовать из байтов массива в Int?

Благодаря

+0

Там должно быть что-то неправильно целое состоит из 4 байтов? – NtFreX

+0

Да, это правильно ... если вы попробуете: http://www.binaryhexconverter.com/hex-to-decimal-converter –

ответ

1

Похоже, у вас есть две проблемы здесь:

  1. Количество байт. Для преобразования в Int32 у вас должно быть 4 байта.
  2. Байт-заказ. Похоже, вы пытаетесь вычислить свой номер «назад».

Посмотрите на этот код:

byte[] fromBoardSerial = new byte[4]; 
fromBoardSerial[0] = 0xe0; 
fromBoardSerial[1] = 0x93; 
fromBoardSerial[2] = 0x04; 
fromBoardSerial[3] = 0x00; 

var result = BitConverter.ToInt32(fromBoardSerial, 0); // result = 300000 
+0

Я решил с этим: Array.Reverse (fromBoardSerial); и после преобразования бит ... если вы обновите ответ, я проверил правильный ответ –

Смежные вопросы