Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os
- import struct
- import sys
- def get_data(filename):
- totalbytes = os.path.getsize(filename)
- infile = open(filename, 'rb')
- totalfiledata = infile.read(totalbytes)
- infile.close()
- return totalfiledata
- def is_jis_char(s):
- try:
- s.decode('cp932')
- except UnicodeDecodeError:
- return False
- if len(s.decode('cp932')) == 1:
- return True
- return False
- def myprogram(f):
- output = []
- filedata = get_data(f + '.unpack')
- pos = 0
- while pos < len(filedata) - 1:
- if is_jis_char(filedata[pos:pos+2]):
- flag = False
- startpos = pos
- while True:
- pos += 1
- if filedata[pos] == '\x00':
- break
- endpos = pos
- while filedata[pos] == '\x00':
- if pos == len(filedata) - 1:
- break
- pos += 1
- allowable_len = pos - startpos - 1
- if '\\n' in filedata[startpos:endpos]:
- flag = True
- s = filedata[startpos:filedata.find('\\n',startpos)]
- s1 = filedata[filedata.find('\\n',startpos) + 2:endpos]
- else:
- s = filedata[startpos:endpos]
- output.append('\t'.join([hex(startpos), s, str(allowable_len)]) + '\n')
- if flag:
- output.append('\t'.join(['', s1, '']) + '\n')
- else:
- pos += 1
- outfile = open(f + '.data','wb')
- outfile.write(''.join(output))
- outfile.close()
- myprogram(sys.argv[1])
Add Comment
Please, Sign In to add comment