C中的"拆包"

Enz*_*dal 1 c python unpack iterable-unpacking

我正在改写剧本从蟒蛇Ç.我对C.比较新.

我在PYTHON中有一个包含这个值的变量:

x = [chr(113),chr(80),chr(191),chr(70)]

y = "".join(x)
Run Code Online (Sandbox Code Playgroud)

这将返回y的这个值:

y = qP¿F           #this is string
Run Code Online (Sandbox Code Playgroud)

现在我要解压缩这个变量,将它存储到变量z以获得我想要的结果.像这样:

z = struct.unpack("<f",y)
print z[0]  #unpack returns a tuple of size 1
Run Code Online (Sandbox Code Playgroud)

我得到的价值是:

x = 24488.2207
Run Code Online (Sandbox Code Playgroud)

这对我来说是正确的.

我想知道C中是否有相同的功能可用于此?

Ign*_*ams 5

不需要这样的功能; 如果字节顺序已经正确,编译器可以通过指针转换或通过union类型来处理该情况.

uint8_t data[4] = {113, 80, 191, 70};

printf("%f\n", (double)(*(float*)data));
Run Code Online (Sandbox Code Playgroud)

...

$ ./a.out 
24488.220703
Run Code Online (Sandbox Code Playgroud)