Python преобразование десятичного числа в шестнадцатеричное в двоичном формате - PullRequest
0 голосов
/ 25 мая 2020

Недавно я изучал 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)

Спасибо

...