Re: Read data structure from binary file
- To: mathgroup at smc.vnet.net
- Subject: [mg98001] Re: Read data structure from binary file
- From: Bill Rowe <readnews at sbcglobal.net>
- Date: Fri, 27 Mar 2009 05:38:04 -0500 (EST)
On 3/26/09 at 5:18 AM, hobz at hotmail.com (hobz) wrote: >I have a binary file which I would like to read into a data >structure. The data structure contains some simple data types like >Integer16 and Integer32, but also a byte array of length 255. >How can I read this byte array into mathematica along with the other >data types as a complete data structure, without having to use >BinaryReadList(file, {"Integer32", "Byte", "Byte", "Byte", "Byte", >"Byte", ..., "Byte", "Integer16"}) ? I can think of two ways to approach this problem. One would be to simply do BinaryReadList[file,"Byte"] and post process the data. If there were a single 32-bit integer followed by a sequence of bytes followed by a single 16 bit integer, then Join[{FromDigits[#[[;;4]],256]}, #[[5;;-3]], {FromDigits[#[[-2;;]],256]}]&@= BinaryReadList[file,"Byte"] should do the trick. The other approach would be to open a binary stream and do something like Flatten@{BinaryRead[stream, "Integer32"],BinaryReadList[stream, "Byte", 255],BinaryRead[stream,"Integer32"]} until you have read all of the data. Remember to close the stream after you are done.