Недавно я изучал Python и у меня на уме возник вопрос.
Мне интересно, почему x = 2998302 сохраняется как 02 2D C0 1E вместо 2D C0 1E? Я думаю, это потому, что x.to_bytes (4, 'big) . Несмотря на это, мой калькулятор переводит 2998302 в 2DC01E. Так что я не понимаю, откуда у нас 02 в начале. Если я также добавлю 02 и вычислю 02DC01E, мой компьютер выдаст другой результат.
Вот код, который у меня есть
# with open("binary", 'bw') as bin_file:
# bin_file.write(bytes(range(17)))
#
# with open("binary", 'br') as binFile:
# for b in binFile:
# print(b)
a = 65534 # FF FE
b = 65535 # FF FF
c = 65536 # 00 01 00 00
x = 2998302 # 02 2D C0 1E
with open("binary2", 'bw') as bin_file:
bin_file.write(a.to_bytes(2, 'big'))
bin_file.write(b.to_bytes(2, 'big'))
bin_file.write(c.to_bytes(4, 'big'))
bin_file.write(x.to_bytes(4, 'big'))
bin_file.write(x.to_bytes(4, 'little'))
with open("binary2", 'br') as bin_file:
e = int.from_bytes(bin_file.read(2), 'big')
print(e)
f = int.from_bytes(bin_file.read(2), 'big')
print(f)
g = int.from_bytes(bin_file.read(4), 'big')
print(g)
h = int.from_bytes(bin_file.read(4), 'big')
print(h)
i = int.from_bytes(bin_file.read(4), 'big')
print(i)
Спасибо