繁体   English   中英

浮点到字节数组转换

[英]Float to byte array conversion

我们用

float f= 3.5f ;
BitConverter.GetBytes(f);

它返回长度为4的字节数组。但是我不知道其背后的数学原理。 有人会教这种转换背后的数学吗? 还赞赏双重转换信息。

在幕后,它使用不安全的C风格指针将基础的32位值复制到32位数组( byte[4] )中:

int rawBits = *(int*)&value;
byte[] bytes = new byte[4];
fixed(byte* b = bytes)
    *((int*)b) = rawBits;
return bytes;

结果取决于体系结构,只要字节顺序与发生复制的机器的内存字节顺序(字节序)相匹配即可。

例如,如果32位rawBits值为0xAABBCCDD ,并且在内存中以AA BB CC DD ,则该数组将包含0xAA, 0xBB, 0xCC, 0xDD 如果内存中表示形式为DD CC BB AA ,则该数组将包含0xDD, 0xCC, 0xBB, 0xAA

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM