由于乘以我想要理解的 Numpy 产品的输出,我遇到了溢出警告。它们在我的大型项目中实际使用的简化版本详述如下:
import numpy as np
class MyClass(object):
def __init__(self,
array_1,
array_2):
# Assigning arrays to be used in later methods
self.array_1 = array_1
self.array_2 = array_2
# Assigning some scaling factors to be used in later methods.
self.value_1 = np.prod(self.array_1.shape)
self.value_2 = np.prod(self.array_2.shape)
print("Numpy Product Assignment: {0}, {1}".format(self.value_1, self.value_2))
# Alternative assignment of scaling factors
self.alt_value_1 = self.array_1.shape[0] * self.array_1.shape[1]
self.alt_value_2 = self.array_2.shape[0] * self.array_2.shape[1]
print("Regular Product Assignment: {0}, {1}".format(self.alt_value_1, self.alt_value_2))
pass
def mymethod(self):
print("Direct Multiplication: {0}".format(80160 * …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Python的struct模块来解码来自GPS系统的一些二进制头文件.我有两种类型的标题,长和短,我有一个例子,阅读下面的每一个:
import struct
import binascii
packed_data_short = binascii.unhexlify('aa44132845013b078575e40c')
packed_data_long = binascii.unhexlify('aa44121ca20200603400000079783b07bea9bd0c00000000cc5dfa33')
print packed_data_short
print len(packed_data_short)
sS = struct.Struct('c c c B H H L')
unpacked_data_short = sS.unpack(packed_data_short)
print 'Unpacked Values:', unpacked_data_short
print ''
print packed_data_long
print len(packed_data_long)
sL = struct.Struct('c c c B H c b H H b c H L L H H')
unpacked_data_long = sL.unpack(packed_data_long)
print 'Unpacked Values:', unpacked_data_long
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,我都得到了我期望的长度 - 短标头为12个字节,长标头为28个字节.此外,所有字段都正确显示(据我所知,对于旧数据)是合理的值.到目前为止都很好.
我提出这个跨越到另一台计算机(运行不同版本的Python的-而不是2.7.11 2.7.6),我得到不同的结构长度使用calcsize,并获得试图通过它,我都计算的长度和其他错误版本是满意的.现在短标头需要16个字节,而长标签需要36个字节.
如果我通过更大的金额,它要求大多数记录都找到,直到"L"记录.在长示例中,第一个是预期的,但第二个应该只是0,不正确,因此后面的两个字段也是不正确的.在功能方面希望我注意到,这是4对每个"1"的,实际上只是运行的字节数的光struct.calcsize('L'),我得到8在2.7.6和4 2.7.11长度.这至少缩小了问题所在,但我不明白为什么会发生这种情况.
目前我正在将第二台计算机更新为Python 2.7.11(一旦我拥有它就会更新),但我在结构文档中找不到任何可能表明已经发生变化的内容.有没有我明显错过的或者这只是一个版本问题?
我所指的文件就在这里.
编辑:进一步评论OS - …
我正在尝试在 Python 中解码 Novatel GPS 流,并且我已对同步、标头和有效负载的所有组件进行了排序,但我无法复制用作消息一部分的 CRC32。用于生成附加在消息上的 CRC 的算法用 c 编写如下:
#include <iostream>
#include <string>
using namespace std;
#define CRC32_POLYNOMIAL 0xEDB88320L
//#define CRC32_POLYNOMIAL 0x04C11DB7L
unsigned long CRC32Value(int i)
{
int j;
unsigned long ulCRC;
ulCRC = i;
for (j = 8; j > 0; j--)
{
if (ulCRC & 1)
ulCRC = (ulCRC >> 1) ^ CRC32_POLYNOMIAL;
else
ulCRC >>= 1;
}
return ulCRC;
}
unsigned long CalculateBlockCRC32(
unsigned long ulCount,
unsigned char *ucBuffer)
{
unsigned long ulTemp1;
unsigned long …Run Code Online (Sandbox Code Playgroud)