0
   #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' )" を出力します。ここで何が起こっているのでしょうか?私の質問を投稿する資格を得るために、より多くの情報を投稿してください。ですから、質問を投稿できるようになるまで、ランダムなものを入力するだけです。

4

1 に答える 1

2

あなたの期待を変えてください:)

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

2 つの文字列は同等です。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]
于 2015-01-19T03:02:16.447 に答える