Прочетете цяло число от двоичен файл в Python

Имам следния фрагмент от C код:

#include <stdio.h>
void main(){
  int a = 1308901095;
  FILE *fp;
  fp = fopen("file", "wb");
  fwrite(&a, sizeof(int), 1, fp);
  fclose(fp);
  printf("Done\n");
}

Това ще запише цялото число "a" във файл "file", в двоична форма.

Как мога да прочета това число в Python?


person ov1d1u    schedule 24.06.2011    source източник
comment
Малък съвет: Ако прехвърляте този двоичен файл между компютри, не забравяйте да вземете предвид endianness и размера на вашия int.   -  person csl    schedule 24.06.2011


Отговори (1)


Опитайте да следвате.

from struct import *
f = open('file', 'rb')
print unpack('<i', f.read(4))[0]
f.close()

имайте предвид, че използването на '‹' за вашата машина е Little Endian или не.

person mattn    schedule 24.06.2011
comment
Трябва да замените '›' или '‹' с '@', за да използвате естествения endiance. Източник: docs.python.org/library/ - person Léo Germond; 24.06.2011
comment
@Leo: Ако приемем, че файлът се чете от същата машина (архитектура) като тази, която е написала. - person Johnsyweb; 24.06.2011
comment
@john, да, ти си напълно прав за това, тъкмо довършвах отговора ти. - person Léo Germond; 24.06.2011