title: python - Parsing data from binary file using structs
body: <p>I have a save game file that I am trying to parse out all of the characters attributes by reading the file using hex offsets. I'm able to get all strings out properly since that plain text but I am having issues with parsing the binary portions that I am working with.</p>
  
  <p>I'm pretty sure that I'm reading in the right data but when I unpack the string I am getting unexpected (incorrect) output</p>
  
  <p>The file I'm working with is www.retro-gaming-world.com/SAVE.DAT</p>
  
  <pre><code>import struct
  infile = open('SAVE.DAT','rb')
  try:
      buff = infile.read()
  finally:
      infile.close
  
  infile.seek(0x00,0)
  print "Save Signature: " + infile.read(0x18)
  print "Save Version: " + str(struct.unpack('&gt;i',buff[0x18:0x18+4])[0])
  infile.seek(0x1C,0)
  print "The letter R: " + infile.read(0x01)
  infile.seek(0x1D,0)
  print "Character Name: " + infile.read(0x20)
  infile.seek(0x3D,0)
  print "Save Game Name: " + infile.read(0x1E)
  print "Save game day: " + str(struct.unpack('&gt;i',buff[0x5B:0x5B+4])[0])
  print "Save game month: " + str(struct.unpack('&gt;i',buff[0x5D:0x5D+4])[0])
  print "Save game year: " + str(struct.unpack('&gt;i', buff[0x5F:0x5F+4])[0])
  </code></pre>
  
  <p>I'm having two different issues, either the wrong data is returned or when I try to unpack some of the fields I get an error that the string isn't long enough, I can read in more but the day month and year are only 2 and 4 bytes respectively and are integers, I'm not sure I'm going about this the right way, I believe I'm fetching the right fields but think I am unpacking or handling the data incorrectly some where if not completely.</p>
  
  <p>version should return 0100
  day should return 21
  month should return 09
  year should return 2013</p>
  
  <p>What exactly am I getting wrong hrere, is there another way or a better way to go about parsing the fields from the binary?</p>