这可能是极其微不足道的,如果是这样,我道歉,但我真的对我得到的输出感到困惑:hex?十进制的?什么?在
下面是一个示例,它返回的内容:
>>> print 'Rx State: ADC Clk=', ADC_Clock_MHz,'MHz DDC Clk=', DDC_Clock_kHz,'kHz Temperature=', Temperature,'C'
Rx State: ADC Clk= [1079246848L, 0L] MHz DDC Clk= [1078525952L, 0L] kHz Temperature= [1078140928L, 0L] C
现在我承认这只是一个小小的猜测,因为我不知道确切的数据是什么-我有一个如何从文件中解析出来的规范,但是它给了我非常奇怪的答案。在
正如你所看到的-这些值非常相似,都在1078000000大关附近,这让我相信我可能提取了一些奇怪的东西(比如hex,但我不认为是……)
结构如下(抱歉篇幅):
^{pr2}$然后通过以下方法检索到上面的示例:
pos = 2
v1 = [content[pos+1], content[pos]]
pos = pos+2
v2 = [content[pos+1], content[pos]]
pos = pos+2
v3 = [content[pos+1], content[pos]]
pos = pos+2
ADC_Clock_MHz = v1
DDC_Clock_kHz = v2
Temperature = v3
好的,再次抱歉,这是多么冗长,但这不仅仅是那些值,似乎有些值是可以的,有些不是,这使我相信较大的数字是以不同的方式编码的。。。我也不知道为什么所有的值都是成对的!在
裤子的问题,但如果有人有任何洞察力,将不胜感激。在
内容是成对的,因为您为变量分配了一对(例如
ADC_Clock_MHz = v1
和v1 = [content[pos+1], content[pos]]
)。在您基本上是将两个元素的列表分配给}中的元素。在
v1
,其中第一个元素是数组content
中索引pos+1
中的元素,第二个元素是数组pos
中的索引{我有点困惑,为什么你要构建这两个元素的列表。你想把这两个元素组合成一个数字吗?如果可以的话,我想你需要告诉我们更多关于文件格式的信息。这是家庭作业吗?在
不,输出不是十六进制的,是十进制的。我想你从二进制文件中读取的数据不正确。在
你可能会更喜欢下面这样的东西来阅读这个区块。在
如果您的数据没有正确解包,最可能的原因是头不是简单的2个长整数。或者,它可能没有反映你的平台的“endian-ness”。在
使用
struct
允许您向格式字符串添加“<;”或“>;”,以尝试不同的尾数。此外,您可以轻松地更改消息的格式,以使用普通的int或带符号的int或float,而无需太多实际工作。在您还可以打印
repr(header)
和repr(body)
,以更好地了解数据的实际外观。在我发现这很容易做到numpy.fromfile文件在
指定要提取的内容(例如uint32、int16等),并将其提取为数组。 您甚至可以将自己的类型指定为现有类型的集合,这意味着您可以一次性提取已知结构(例如,2个uint32s,1个字符串,5个int16,作为一个8个值的数组)
相关问题 更多 >
编程相关推荐