有人能帮忙处理下面的代码和错误吗?我不熟悉python值转换。
生成错误的特定行是:
value = struct.unpack("<h",chr(b)+chr(a))[0]
TypeError:需要一个类似字节的对象,而不是'str‘。
代码片段是:
if packet_code ==0x80: # raw value
row_length = yield
a = yield
b
我有从硬件读取并返回的库函数。
value = readregister(registerindex,numbytes)
其中value是一个python列表。
如果numbytes为4,则返回的完整编号将在
value[0],value[1],value[2] and value[3]
寄存器中的实际值是一个浮点数。那么,如何将4个元素的列表值转换为python浮点数?
我正在将以下字符串转换为它的无符号整数表示形式:
str = '\x00\x00\x00\x00\x00\x00\x01\xFF'
我可以使用struct.unpack('8B', str)来获得元组表示(0,0,0,0,0,0,1,255),但是将这个元组转换为整数的最快/最简单的方法是什么?
现在,我的代码是
def unpack_str(s):
i = r = 0
for b in reversed(struct.unpack('8B', s)):
r += r*2**i
i++
return r
但是对于这样一
我正在尝试从SQLite数据库中读取blob数据,并将blob内容转换为浮点数列表:
import sqlite3
import struct
conn = sqlite3.connect('my_database.sqlite')
c = conn.cursor()
c.execute('select my_column from my_table where time between \'2018-11-15 14:03:04\' and \'2018-11-15 14:03:08\'')
blob_of_data
我正在和Python一起做一些字符串解码,我试图理解这一行代码是什么.
for irradiance_data in struct.iter_unpack("qHHHHfff", irradiance_list_bytes):
print(irradiance_data)
在我的例子中,irradiance_list_bytes是这样的
"\xf5R\x960\x00\x00\x00\x009\x0f\xb4\x03\x01\x00d\x00\xa7D\xd1BC\x8c\x9d\xc2\xb3\xa5\xf0\xc0\xaer\x990
了解这个qn已经被询问过了。但是有了上一个线程提供的答案,我仍然不能让我的程序运行。
#!/usr/bin/env python
import pika
import os
import sys
import time
import struct
path= "pipe"
fifo=open(path,'r')
while True:
var=fifo.read()
if var:
if len(var) == 8:
print struct.unpack("<l", var)[0]
我正在试着把Python代码写成PHP。但我无法将PHP打包格式等同于Python打包格式
Python:
format = "!LLLLQ"
mystr = struct.unpack(format, str)
我是这样使用的
$mystr = unpack("!LLLLQ", $str); // But its not working
因为根本就没有!或PHP包中的Q。
有什么办法可以做到这一点吗?
Python的格式代码:
PHP格式代码:
谢谢!
我正在尝试将别人10年前的python2脚本转换为python3。我已经解决了大部分问题,但这个问题卡住了。这是一条线
(a,b,c,d) = unpack('!HIIH', someData)
当运行的时候,我得到了这个:
TypeError: a bytes-like object is required, not 'str'
网上有很多关于这个问题的文章,但没有一个正确的答案。我尝试过在someData对象上以各种方式使用'bytes‘函数,但都不起作用。
更多的信息是,我相信someData对象的起源是通过另一个模块中的这段代码:
e = str
我有一个继承的python程序,并且正在尝试扩展。
我已经将一个两字节长的字符串提取到一个名为pS的字符串中。
pS第一个字节为0x01,第二个字节为0x20,十进制值为== 288
我一直在尝试将它的值作为一个整数,我使用了以下形式的行
x = int(pS[0:2], 16) # this was fat fingered a while back and read [0:3]
并得到信息
ValueError: invalid literal for int() with base 16: '\x01 '
另一位C程序员和我已经搜索了一整天,并试图让它工作。
请给我一些
我有一个简单的连接到我的。在客户机中,我希望发送一些输入中给定大小的数据:首先发送一个Integer,其中包含数据大小,然后发送byte数据块。
这是客户:
Integer size = 1234
Socket so = new Socket("10.151.0.248", 8000);
byte[] bytes = new byte[size];
DataOutputStream out = new DataOutputStream(so.getOutputStream());
out.writeInt(size);
out.write(bytes);
从服务器端,我想先读取
我试图从图像中读取字节,并从该图像中获取所有int (16位)值。在分析了图像头后,我得到了像素值。当字节对类似于b“\xd4 4\x00”时,我得到的值是不正确的。在这种情况下,应该是54272,而不是3392。
这是代码的一部分:我使用生成器获取字节:
import itertools
def osddef_generator(in_file):
with open(in_file, mode='rb') as f:
dat = f.read()
for byte in dat:
yield byte
de
我有一个像这样的蟒蛇十六进制:
variable = b'\x80pu\xa6\x7f\xfe\xb9\x1d\xaf'
在python 2中,如果我做了变量,就会得到'\x80‘,但是在python 3中,它会为我转换为int,并返回128。
我想我可以尝试像这样把答案转换成十六进制:
hex(variable[0])
但是它是一个完整的数组,我可能不是整数。我在寻找更好的方法来做这件事,因为:
hex() takes only integer and also it returns a string not the hexadecmial version
我要的是实
我的问题是:
我正在使用,目前我正在尝试从Kinect传感器的PointCloud读取值。值的类型为PointCloud2和PointCloud 2。数据保存PointCloud的数据,并具有uint8[]类型。
在我的项目中,我目前正在使用python,并且我已经成功地注册和检索了数据。我的问题是,当试图检索它们时,python将uint8[]数组解析为字符串。
我遇到问题的脚本的当前部分是背诵:
def PointCloud(self, PointCloud2):
self.lock.acquire()
for x in PointCloud2.data: