BinaryReader читает 4 байта и не получает ожидаемого результата - PullRequest
3 голосов
/ 08 октября 2011

Я использую BinaryReader для чтения файла, и у меня проблема, которую я не могу решить. (С #)

Мне нужно прочитать 4 байта. Когда я смотрю на эти байты с помощью моего шестнадцатеричного просмотра, это 00 00 00 13. Итак, я попробовал Int32 fLength = dbr.ReadInt32(); В результате 318767104 вместо 19 (что я ожидал и нужно). Когда я использую byte[] fLength = dbr.ReadBytes(4);, я вижу, что прочитал правильные байты [0] [0] [0] [19].

(у меня та же проблема со следующими байтами)

Как я могу прочитать эти 4 байта и получить 19 как результат.

Заранее спасибо!

Robertico

Ответы [ 2 ]

6 голосов
/ 08 октября 2011

Это little endian против big endian проблема: 318767104 = 0x13000000

Из документации :

BinaryReader хранит эти данныевведите в формате с прямым порядком байтов.

Jon Skeet's miscutil имеет читатель, который позволяет вам выбрать большой или маленький порядок байтов.

1 голос
/ 17 февраля 2012

для чтения двоичного файла 4 байта вместе

byte[] byteArray = new byte[(int)(flstrm.Length)];
int a= System.BitConverter.ToInt32(byteArray, 0); //here 0 is the start index
lbl1.Text= a.toString();
...