有人可以解释一下如何使用 c# 将 float(Vector3.x) 转换为字节数组并使用 Node js 对其进行解码吗?
我在网上看到Vector3.x是一个system.single数据类型并且使用4个字节(32位)。我使用 BitConverter 将其转换为字节数组。对于 Nodejs,我使用 readFloatBE()。
我不知道我做错了什么,但使用 console.log() 时,我经常得到 Node js 的错误结果。
统一csharp:
public static int FloatToBit(int offset, ref byte[] data, Single number)
{
byte[] byteArray = System.BitConverter.GetBytes(number);
for (int i = 0;i<4;i++)
{
data[offset + i] = byteArray[i];
}
return 4;
}
Node js
readFloat: function (offset, data) {
var b = new Buffer(4);
for (var i = 0; i < 4; i++) {
b[i] = data[offset + i];
}
return data.readFloatLE(b, 0);
},
如果我发送-2.5,统一输出为:0 0 32 191,-1统一输出为:0 0 128 192
带有 readFloatLE 的 Nodejs 输出:3.60133705331478e-43
最佳答案
这是一组从前到后的工作数据。
C#:
Single fl = 2.5F;
var bytes = System.BitConverter.GetBytes(fl);
var str = BitConverter.ToString(bytes); // 00-00-20-40
Node.js:
let buffer = Buffer.from([ 0x00, 0x00, 0x20, 0x40 ]);
let float = buffer.readFloatLE(); // 2.5
请注意我在 Nodejs 中创建缓冲区的方法,尤其是(也使用 -1 进行了测试和验证,但为了简洁起见,我保留了代码)。
关于c# - Unity C# 将float转换为字节数组并用node js读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37602160/