Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过UDP发送的INT是字节_Python_Arrays - Fatal编程技术网

Python 通过UDP发送的INT是字节

Python 通过UDP发送的INT是字节,python,arrays,Python,Arrays,我通过UDP发送到运行在RaspberrypiZero上的Python,从Mac上的MaxMSP发送INT。然后,INT使用其自己的库发送到点阵显示器(Micro dot Phat) 我的问题是INT显示为 b'int\x00,i\x00\x00\x00\x00\x00\x00\x00 打印时和作为字符串写入显示器时 我花了几天时间在谷歌上搜索,并尝试了struct.unpack、int.from_bytes和decode('utf-8')方法,正如在几个相关问题上建议的那样,但似乎无法提取我希

我通过UDP发送到运行在RaspberrypiZero上的Python,从Mac上的MaxMSP发送INT。然后,INT使用其自己的库发送到点阵显示器(Micro dot Phat)

我的问题是INT显示为

b'int\x00,i\x00\x00\x00\x00\x00\x00\x00

打印时和作为字符串写入显示器时

我花了几天时间在谷歌上搜索,并尝试了struct.unpack、int.from_bytes和decode('utf-8')方法,正如在几个相关问题上建议的那样,但似乎无法提取我希望显示的(1、2、3、4、5等)

显示需要一个write_字符串,因此我认为需要将字节格式转换为python int,然后转换为字符串,或者直接转换为字符串

任何帮助都将不胜感激

按要求编码

import socket

import struct

UDP_IP = "My Pi's IP"
UDP_PORT = 'My chosen port"
mystring = ""

serverSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
serverSOCK.bind((UDP_IP, UDP_PORT))

while True:
   data, addr = serverSock.recvfrom(1024)

   mystring = str(data) 
这允许从MaxMSP发送的字符串按预期在显示器上显示,但不允许在ints上显示

   write_string(mystring, kerning=False)
   show()
这将发送到点阵显示

   print (mystring) 
方法我尝试将字节转换为整数,但没有任何运气

data = data.decode('utf-8')

struct.unpack('<' + 'B'*len(data), data)

int.from_bytes(data, byte order='little')

data = struct.unpack(data) [0]
data=data.decode('utf-8')

解包(“您可以使用
int.from_bytes
方法执行此操作,但需要从
bytes
字符串中切掉三个初始的b“int”字节

bstring = b'int\x00,i\x00\x00\x00\x00\x00\x00'
n = int.from_bytes(bstring[3:], 'little')
print(n)
输出

6892544
如果这不是正确的整数,那么您需要了解数据是如何编码的


看起来
\x00,i
也是标头的一部分,因此我们需要将切片操作调整为

n = int.from_bytes(bstring[6:], 'little')

向我们展示代码,证明您尝试了一些东西的代码。这不是一个作为服务平台的编码!在我的mac上被问到问题,代码在我的Pi上,所以不仅仅是复制和粘贴代码的情况…不期望按需编码只是一些关于哪种方法可能有效的一般指针…但是现在将发布代码。您好,非常感谢您的帮助发送的整数是0,所以我必须对原始字节的encoding@dvectR哦,也许
\x00,i
也是头的一部分。因此您也需要将其切掉,例如
int.from_字节(bstring[6:],'little')
。如果这不起作用,请在您的问题中再添加一些整数及其编码的示例&我将尝试找出真正的编码格式。例如,1、2、3、10、100、1000。如果允许的话,还可以添加一些负数。您是对的,我是标题的一部分,您建议现在将int流更改为arriv非常好。再次感谢你的帮助。