0
私のコードを使用するときに次のエラーが発生します。このコードの私の目標は、整数入力をソケットメッセージングのバイナリデータに変換するクラスを作成することです。私はこのアプリケーションのパッキングとアンパックを理解しようとしています。どんな助けもありがとうございます。Python Struct/Packing errors
コード:
import struct
def BinaryPacker(input1):
s = struct.Struct('@I')
pack_data = s.pack(int(input1))
print 'Original values:', input1
print 'Format string :', s.format
print 'Uses :', s.size, 'bytes'
return pack_data
#BinaryUnpacker unpacks the data with small discrepancy in floating point value
def BinaryUnpacker(input2):
s = struct.Struct('@I')
print input2
print 'Size of struct: ', struct.calcsize(input2)
unpack_data = s.unpack(input2)
print 'Unpacked Values:', unpack_data
print unpack_data[0]
print '\n'
while True:
print ("Message to pack n unpack:")
message = raw_input()
message = BinaryPacker(message)
BinaryUnpacker(message)
エラー1:9が動作するように見えるが、少数を< 10が表示さを使用していくつかの理由の代わりに、文字列の文字として解釈されます。
Message to pack n unpack:
5
Original values: 5
Format string : @I
Uses : 4 bytes
Size of struct:
Traceback (most recent call last):
File "C:\PythonPractice\BinaryPacker.py", line 43, in <module>
BinaryUnpacker(message)
File "C:\PythonPractice\BinaryPacker.py", line 33, in BinaryUnpacker
print 'Size of struct: ', struct.calcsize(input2)
struct.error: bad char in struct format
エラー2:入力2を整数に変換しようとすると、リテラルエラーが発生します。
C:\PythonPractice>BinaryPacker.py
Message to pack n unpack:
9
Original values: 9
Format string : @I
Uses : 4 bytes
Size of struct:
Traceback (most recent call last):
File "C:\PythonPractice\BinaryPacker.py", line 43, in <module>
BinaryUnpacker(message)
File "C:\PythonPractice\BinaryPacker.py", line 33, in BinaryUnpacker
print 'Size of struct: ', struct.calcsize(int(input2))
ValueError: invalid literal for int() with base 10: ''
C:\PythonPractice>BinaryPacker.py
Message to pack n unpack:
10
Original values: 10
Format string : @I
Uses : 4 bytes
Size of struct:
Traceback (most recent call last):
File "C:\PythonPractice\BinaryPacker.py", line 43, in <module>
BinaryUnpacker(message)
File "C:\PythonPractice\BinaryPacker.py", line 33, in BinaryUnpacker
print 'Size of struct: ', struct.calcsize(int(input2))
ValueError: invalid literal for int() with base 10: ''