"Unpacking" 在 C 中
"Unpacking" in C
我正在努力将脚本从 python 重写为 C。我对 C 比较陌生。
我在 PYTHON 中有一个变量,其中包含以下值:
x = [chr(113),chr(80),chr(191),chr(70)]
y = "".join(x)
这将 return 这个 y 值:
y = qP¿F #this is string
现在我要做的是解压缩这个变量,将它存储到变量 z 以获得我想要的结果。像这样:
z = struct.unpack("<f",y)
print z[0] #unpack returns a tuple of size 1
我得到的值是:
x = 24488.2207
这对我来说是正确的。
我想知道 C 中是否有相同的函数可以用于此目的?
不需要这样的功能;如果字节顺序已经正确,编译器可以通过指针转换或通过 union
类型自行处理这种情况。
uint8_t data[4] = {113, 80, 191, 70};
printf("%f\n", (double)(*(float*)data));
...
$ ./a.out
24488.220703
我正在努力将脚本从 python 重写为 C。我对 C 比较陌生。
我在 PYTHON 中有一个变量,其中包含以下值:
x = [chr(113),chr(80),chr(191),chr(70)]
y = "".join(x)
这将 return 这个 y 值:
y = qP¿F #this is string
现在我要做的是解压缩这个变量,将它存储到变量 z 以获得我想要的结果。像这样:
z = struct.unpack("<f",y)
print z[0] #unpack returns a tuple of size 1
我得到的值是:
x = 24488.2207
这对我来说是正确的。
我想知道 C 中是否有相同的函数可以用于此目的?
不需要这样的功能;如果字节顺序已经正确,编译器可以通过指针转换或通过 union
类型自行处理这种情况。
uint8_t data[4] = {113, 80, 191, 70};
printf("%f\n", (double)(*(float*)data));
...
$ ./a.out
24488.220703