Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.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中从缓冲区读取两个整数_Python_Buffer - Fatal编程技术网

在python中从缓冲区读取两个整数

在python中从缓冲区读取两个整数,python,buffer,Python,Buffer,我在一个numpy数组中有两个相邻的int16值,它们应该表示一个时间戳 [-1920 -1320] 如何将这些转换为实际的时间戳 我以前在转换单个64位整数时遇到过类似的问题 np.frombuffer() 但是现在我的值由两个整数组成。如何组合这些内容并读取相关的格式?时间戳很模糊,因此我不确定您想要什么,您需要指定格式。也就是说,您可以通过执行以下操作将这些16位数字转换为一个大的32位数字: nums = [-1920, -1320] bits_16 = 0xffff # 2's

我在一个numpy数组中有两个相邻的int16值,它们应该表示一个时间戳

[-1920 -1320]
如何将这些转换为实际的时间戳

我以前在转换单个64位整数时遇到过类似的问题

np.frombuffer()

但是现在我的值由两个整数组成。如何组合这些内容并读取相关的格式?

时间戳很模糊,因此我不确定您想要什么,您需要指定格式。也就是说,您可以通过执行以下操作将这些16位数字转换为一个大的32位数字:

nums = [-1920, -1320]
bits_16 = 0xffff

# 2's compiliments
r = [bin(y & bits_16)[2:] if y < 0 else f'{y:016b}' for y in nums]

# Condense all the 2's into one string and convert to int
int_value = int(''.join(r), 2)
print(r)
print(int_value)

有很多方法可以组合两个16位的信息字,所以很难判断您需要哪一个。
[-1920-1320]
应该转换成什么时间戳?它应该表示32位计数器,但这并不能回答我的问题。32位计数器将包含的确切值是多少?我正在寻找一个值,例如
4208523392
。您有关于这个神秘传感器的更多信息吗?如果没有可靠的信息,您的问题目前无法回答。您是否有不止一个时间戳?这将有助于有几个已知的抵消。谢谢大家。我所掌握的唯一信息是“支持每帧独立的32位时间戳”。回答我们没有所有必要信息的问题通常不是一个好主意。顺便说一句,有更好的方法从无符号数字生成位字符串,而不是乱搞
bin
,例如
format(y,'016b')
,在Python 3.6+中,它甚至更紧凑(更快):
f'{y:016b}
@PM2Ring实际上,如果你看它们是有符号的数字。这意味着字符串格式设置不起作用。我想到了这一点,但在尝试提供无效的解决方案之前,您可能应该仔细查看:)。我的解决办法不是解决全部问题,而是解决部分问题。我提供了一种组合两个16位数字的方法(这是问题陈述的一半)。我不是在提供OP问题的解决方案!当然,我可以看到数据是有签名的(尽管我怀疑不应该有签名,这是另一个问题)。我只是简单地告诉您,与使用
bin
等相比,将无符号数字转换为位的更好方法。我假设我不需要向您解释有符号数字需要特殊处理,因为您的代码已经这样做了。
['1111100010000000', '1111101011011000']
4169202392 # The signed version (2's compliment) would be -125764904