首页 文章

将int和bytearray转换为ByteString Python struct Socket

提问于
浏览
0

我需要通过套接字向服务器发送1 int和1 bytearray(200) . socket.send()函数只接受一个字符串,所以我需要int和bytearray作为一个字符串中的字节 . 我尝试将两者都转换为带有struct.pack()的字符串,这对于int而言并不适用于bytearray .

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((TCP_IP, TCP_PORT))
    print "Connected to: ",  s.getpeername()
    #Trying to put int and bytearray into 1 string
    a= 02 # int
    b= bytearray(200) #bytearray
    c = struct.pack("B", a)
    c += b



    s.send(c)
    print s.recv(1024)

1 回答

  • 0

    连接它们:

    >>> import struct
    >>> struct.pack('<l', 1234) + bytearray([0]*10)
    b'\xd2\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
    

    或者还指定bytearray:

    >>> struct.pack('<l10s', 1234, bytearray([0]*10)) # In Python 3.x
    # struct.pack('<l10s', 1234, bytes(bytearray([0]*10))) # In Python 2.x
    b'\xd2\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
    

相关问题