Python 3 struct.pack 未正确格式化十六进制字符串

Python 3 struct.pack not formatting hex string correctly

   #res\file_1.png- file_1

    file_1_size_bytes = len(file_1_read)

    print (("file_1.png is"),(file_1_size_bytes),("bytes."))

    struct.pack( 'i', file_1_size_bytes)
    file_1_size_bytes_hex = binascii.hexlify(struct.pack( '>i', file_1_size_bytes))
    print (("Hexlifyed length - ("),(file_1_size_bytes_hex),(")."))

    with open(pack, 'ab') as header_1_:
    header_1_.write(binascii.unhexlify(file_1_size_bytes_hex))

    print (("("),(binascii.unhexlify(file_1_size_bytes_hex)),(")"))

    with open(pack, 'ab') as header_head_1:
    header_head_1.write(binascii.unhexlify("000000"))
    print ("Header part 2 added.")
    print ("file_1.png byte length added to header.")

    print ("-------------------------------------------------------------------------------") 



    #res\file_2.png- file_2

    file_2_size_bytes = len(file_2_read)

    print (("file_2.png is"),(file_2_size_bytes),("bytes."))

    struct.pack( 'i', file_2_size_bytes)
    file_2_size_bytes_hex = binascii.hexlify(struct.pack( '>i', file_2_size_bytes))
    print (("Hexlifyed length - ("),(file_2_size_bytes_hex),(")."))

    with open(pack, 'ab') as header_2_:
    header_2_.write(binascii.unhexlify(file_2_size_bytes_hex))

    print (("("),(binascii.unhexlify(file_2_size_bytes_hex)),(")"))

    with open(pack, 'ab') as header_head_2:
    header_head_2.write(binascii.unhexlify("000000"))
    print ("Header part 3 added.")
    print ("file_2.png byte length added to header.")

    print ("-------------------------------------------------------------------------------") 

file_1.png is 437962 bytes.
Hexlifyed length - ( b'0006aeca' ).
( b'\x00\x06\xae\xca' )
Header part 2 added.
file_1.png byte length added to header.
-------------------------------------------------------------------------------
file_2.png is 95577 bytes.
Hexlifyed length - ( b'00017559' ).
( b'\x00\x01uY' )
Header part 3 added.
file_2.png byte length added to header.
-------------------------------------------------------------------------------

出于某种原因,struct.pack 没有正确格式化 file_2。它应该打印“(b'\x00\x01\x75\x59')”。而是打印“( b'\x00\x01uY' )”。知道这里会发生什么吗?它告诉我 post 更多符合条件的信息 post 我的问题。所以我只是随机输入一些东西,直到它让我 post 我的问题。

改变你的期望:)

>>> b'\x75' == b'u'
True
>>> b'\x59' == b'Y'
True

两个字符串是等价的。 Python 在字节串中显示 ASCII 字符:

>>> b'\x00\x01\x75\x59' == b'\x00\x01uY'
True

这些只是同一字节串的可打印表示。两个对象包含相同的字节值:

>>> list(b'\x00\x01uY')
[0, 1, 117, 89]
>>> list(b'\x00\x01\x75\x59')
[0, 1, 117, 89]