[英]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.