c# - Unity C# 将float转换为字节数组并用node js读取

标签 c# node.js floating-point buffer arrays

有人可以解释一下如何使用 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/

相关文章:

c# - 异常: Object synchronization method was called from an unsynchronized block of code

c# - ASP .NET Web 应用程序 URL 中的随机数

c# - WPF 等效于 AccessibleName 属性

language-agnostic - 为什么 IEEE754 标准中除以零会产生无限值?

go - 使用相同浮点常量值的不同模式会导致不同的结果

floating-point - 求解二次方程的数值稳定方法

c# - Visual Studio 是否有任何扩展或工具可用于在 Debug模式下绘制数值数据?

javascript - 访问对象中数据的复杂性

mysql - 如何返回Node.js mysql查询连接的响应

node.js - 如何在连接中向中间件添加模式?