我通过TCP套接字接收数据,它应该是"12345678901"
作为值。我还试图通过byteorder ='big'
和{int.from_bytes
来转换它
,struct.unpack
。。。在
但效果并不好。在
我得到的实际值是b'\xd2\x04.\x16\xc5"'( << data == conn.recv(2048))
我应该用哪种方式把它转换成整数?在
编辑:在服务器端(非常典型)
TCP_IP = '192.168.3.50'
TCP_PORT = 8000
BUFFER_SIZE = 2048
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((TCP_IP, TCP_PORT))
s.listen(1)
conn, addr = s.accept()
print('Connection address:', addr)
data_dummy = 0
while 1:
data = conn.recv(BUFFER_SIZE)
if not data: break
if data_dummy != data or data_dummy == 0:
print("received data:", data)
print("converted(big)", int.from_bytes(data, byteorder='big'))
print("converted(little)", int.from_bytes(data, byteorder='little'))
客户端(来自PLC)
我将使用命令行。在
^{pr2}$只要是1234就行了。在
NEXT>> 9
received data: b'\xd2\x04\x01\x00\x00\x00'
converted(big) 230914638479360
converted(little) 66770
它不起作用,在这个例子中是12340001。在
NEXT>> 11
received data: b'\xd2\x044\x12\x00\x00'
converted(big) 230915495297024
converted(little) 305398994
它不工作,结构本身也很奇怪。在
好吧,最后的评论澄清了一切。您将这个整数编码为3个字(每个字2个字节)。以前,我做了一些测试,试图将值“解码”为64位
int
,因为12345678901(0x2DFDC1C35)不适合32位,但(显然)没有成功。在根据[Python]: Format Characters,对于单词,我们有
short
对应者(我选择unsigned
版本:H):相关问题 更多 >
编程相关推荐