除了使用内置方法之外,我还需要将float
数字转换为byte[]
BitConverter.GetBytes
。我想通过使用一些逻辑来实现这一点。
谢谢。
答案 0 :(得分:2)
从技术上讲,您可以尝试unsafe
,以便通过byte
指针扫描byte*
:
public static byte[] GetFloatBytes(float value) {
byte[] result = new byte[sizeof(float)];
unsafe {
// Let's treat a float as an array of bytes
byte* b = (byte*) &value;
for (int i = 0; i < result.Length; ++i, ++b)
result[i] = *b;
}
return result;
}
测试:
float x = (float) Math.PI;
// db 0f 49 40
Console.WriteLine(string.Join(" ", BitConverter.GetBytes(x).Select(b => b.ToString("x2"))));
// db 0f 49 40
Console.WriteLine(string.Join(" ", GetFloatBytes(x).Select(b => b.ToString("x2"))));
但是,更好的做法是将指针留给BitConverter
,然后致电BitConverter.GetBytes()
。