按照IEEE754
標(biāo)準(zhǔn)的規(guī)定,float
類(lèi)型實(shí)際用4字節(jié)存儲(chǔ)爽室,比如50.0
對(duì)應(yīng)4字節(jié)0x00 0x00 0x48 0x42
(注意大小端)温自,用C語(yǔ)言轉(zhuǎn)換只要memcpy
就行。
unsigned char c[4] = {0x00,0x00,0x48,0x42};
float f;
memcpy(&f,c,4);
printf("%.3f\n", f);
上面打印結(jié)果就是50.000
知给。如果要把float
轉(zhuǎn)換為4字節(jié)數(shù)組同樣可以用memcpy瓤帚。
在python
中的方法如下:使用struct.pack
和struct.unpack
即可。
import struct
def byte2float(x):
return struct.unpack('f', struct.pack('4B', *x))[0]
def float2byte(f):
return [hex(i) for i in struct.pack('f', f)]
if __name__ == '__main__':
print(byte2float([0x00, 0x00, 0x48, 0x42])) # 50.0
print(float2byte(50)) # [0x00, 0x00, 0x48, 0x42]