Issue
trying to read decimal values from text file convert into 16-bit binary and into a binary file.
Sample input file
120
300
-250
13
-120
Code:
def decimaltoBinary(filename,writefile):
file = filename
print(file)
file_write = open(writefile,'wb')
file_read = open(file, 'rb')
for line in file_read:
value = int(line)
if value < 0:
binary_value = bin((2**16) - abs(value))[2:].zfill(16)
file_write.write(binary_value + "\n")
else:
binary_value = bin(int(value))[2:].zfill(16)
file_write.write(binary_value + "\n")
file_write.close()
decimaltoBinary(input_file.text,output_file.bin)
Hoping to write the converted decimal values into a binary file.. any help is much appreciated
Solution
You can use the struct
module for that:
data = [120,300,-250,13,-120] # you seem to have the reading part covered already
# using a list as data input for demo purposes
import struct
with open("f.bin","wb") as f:
for d in data:
f.write(struct.pack('h', d)) # 2 byte integer aka short
with open("f.bin","rb") as f:
print(f.read()) # b'x\x00,\x01\x06\xff\r\x00\x88\xff'
You just need to specify 'h'
to get short (2-byte integer) packing.
For the weird print output blame python - it replaces "known" \xXX
codes with shorter normal characters - f.e. ',' => 0x2c
or \r
=> \x0d
etc.
Answered By - Patrick Artner Answer Checked By - Marie Seifert (PHPFixing Admin)
0 Comments:
Post a Comment
Note: Only a member of this blog may post a comment.