I’m trying to read and print the binary data of a file but notice after reading the first line, with 128 bits, the subsequent lines printed out do not match the lines when I look at the binary data manually with notepad++.
nfp = open(new_file, 'rb')
dc = 0
ac = 0
short_lines = 0
line_string = str("")
for x in nfp.read():
if dc == 16:
ac += 1
if ac == 5:
break
else:
print(line_string)
line_string = str("")
dc = 0
continue
#open cmpf here and write
else:
dc += 1
y = str("{:08b}".format(x))
line_string = line_string + str(" ") + y
print(short_lines)
print("Final line count:", str(ac/128))
valk = input("Click any button to end program...")```
Expected output:
[enter image description here][1]
Actual output:
[printed data][2]
As you can see, the first line matches, but after that they are completely different. Why?
[1]: https://i.stack.imgur.com/pKOAA.png
[2]: https://i.stack.imgur.com/DBgJG.png
Advertisement
Answer
The problem is that when dc==16 then your program prints whole line but the current x value is skipped (it is not used anywhere). To fix this problem you may remove else like this:
for x in nfp.read():
if dc == 16:
ac += 1
if ac == 5:
break
else:
print(line_string)
line_string = str("")
dc = 0
dc += 1
y = str("{:08b}".format(x))
line_string = line_string + str(" ") + y