Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > How to read an integer value from a binary file?

Reply
Thread Tools

How to read an integer value from a binary file?

 
 
Olivier Elbaz
Guest
Posts: n/a
 
      05-03-2005
Hi,

I read a bmp file (binary file) and I want to extract an integer value
from it (size value).
The whole binary file is read inside a list "all_bmp_file".
I can read the "size" value with the following code:
for r in all_bmp_file[2:5]:
n = struct.unpack('B',r)#B for unsigned char
print n
Result:
(182,)
(47,)
(0,)
The problem is that I would like to read the 4 bytes (integer) as one
number like:
struct.unpack('i','\xb6/\x00\x00')
Result
(12214,)
Note that I can't use struct.unpack('i',all_bmp_file[2:5]) inside my
program since I got a syntax error.

Could you help me to find a solution?
Thanks,
Olivier
 
Reply With Quote
 
 
 
 
John Machin
Guest
Posts: n/a
 
      05-03-2005
On Tue, 3 May 2005 19:46:17 +0200, Olivier Elbaz
<(E-Mail Removed)> wrote:

>Hi,
>
>I read a bmp file (binary file) and I want to extract an integer value
>from it (size value).
>The whole binary file is read inside a list "all_bmp_file".
>I can read the "size" value with the following code:
>for r in all_bmp_file[2:5]:
> n = struct.unpack('B',r)#B for unsigned char
> print n
>Result:
>(182,)
>(47,)
>(0,)
>The problem is that I would like to read the 4 bytes (integer) as one
>number like:
>struct.unpack('i','\xb6/\x00\x00')
>Result
>(12214,)
>Note that I can't use struct.unpack('i',all_bmp_file[2:5]) inside my
>program since I got a syntax error.


You may well have got a syntax error -- we can't tell as you posted
neither the exact code you tried to run, nor the actual error message
that you got. After correcting any syntax error, one would have
expected you to get a run-time error, like the following:

>>> b3 = '\xb6/\x00'
>>> import struct
>>> struct.unpack('i', b3)

Traceback (most recent call last):
File "<stdin>", line 1, in ?
struct.error: unpack str size does not match format
>>>


Luckily this time there was enough extraneous info for Jeff to
diagnose your problem. In future, please consider posting the code
that you ran, and the results that you got.

For the benefit of others who may fall into the same pit, you may like
to consider logging a feature request on sourceforge for the above
error message to be enhanced to show the sizes:

(e.g.) struct.error: unpack str size (3) does not match format (4)

This may make it easier for the perps to realise what has gone wrong
and save them from having to ask the newsgroup

Cheers,
John
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Re: How include a large array? Edward A. Falk C Programming 1 04-04-2013 08:07 PM
read write integer in binary into a file Vianney Lecroart Ruby 9 12-13-2007 01:41 PM
integer int i; *i++ and ++*i have a different integer value after the increment Robben C++ 14 12-27-2005 03:43 AM
how to convert "BigInteger" into "Integer"? how to print out a BigInteger binary value? nick Java 1 10-26-2004 02:45 PM
how to convert "BigInteger" into "Integer"? how to print out a BigInteger binary value? nick Java 0 10-26-2004 08:18 AM



Advertisments