0
我新的结构模块和我试图做这样的事情:从我的服务器开箱字节为int
获取值,然后解压缩,整数,我receving值但它不会把它给我这个错误:
struct.error: unpack requires a bytes object of length 4
编辑: 好了,为的Martijn Pieters的告诉我这是什么存储在value
whne异常被抛出,但我的代码另一部分
value = myClient.mySocket.recv(4)
struct.unpack("I",value)
if value == 2:
#do smth
而且我在value
收到b'\x02\x00\x00\x00'
调试器看到,但解包并没有将其更改为int
所以if语句不执行,而在另一个循环迭代服务器发送什么和有例外。如何将这个字节值解压为整数?
EDIT2:好的,我解决了它
value = myClient.mySocket.recv(4)
value = struct.unpack("I",value)
if value[0] == 2:
#do smth
那么,什么类型的对象是价值呢?你真的收到4个字节吗? –
在调试器中搜索它时,它会说:'b'\ x01 \ x00 \ x00 \ x00'' – Cardano
这是一个长度为4的字节对象,不会抛出该异常。当抛出异常*时,那么'value'中包含了什么?请注意,'recv()'调用**可能会返回更少的字节,如果这是可用的。 –