使用JavaScript将4位字节数组转换为int

使用JavaScript将4位字节数组转换为int,javascript,arrays,Javascript,Arrays,我使用web套接字向我的JS库发送一个4位字节的数组。这个字节数组表示一个数字,我想读回这个数字,但都是JavaScript。 我发现了很多与此相反的示例,以及将字节数组读入字符串的示例 在我的C#代码中: 这将传递一个时间戳(占用17位)。然后,第1个图像的len为4位。然后是图像本身。然后是第二个图像 那么,从JS中读回所有内容: ws.onmessage = function (e) { try { var ts = String.fromC

我使用web套接字向我的JS库发送一个4位字节的数组。这个字节数组表示一个数字,我想读回这个数字,但都是JavaScript。 我发现了很多与此相反的示例,以及将字节数组读入字符串的示例

在我的C#代码中:

这将传递一个时间戳(占用17位)。然后,第1个图像的len为4位。然后是图像本身。然后是第二个图像

那么,从JS中读回所有内容:

ws.onmessage = function (e) {
        try {
                var ts = String.fromCharCode.apply(String, new Uint8Array(e.data, 0, 17));
                var year = ts.substr(0, 4);
                var month = ts.substr(4, 2);
                var day = ts.substr(6, 2);
                var hour = ts.substr(8, 2);
                var min = ts.substr(10, 2);
                var second = ts.substr(12, 2);
                var mil = ts.substr(14, 3);

                liveTimeStamp = hour + "-" + min + "-" + second + "-" + mil + "  " + day + "/" + month + "/" + year;
                var blobLen= e.data.slice(17, 4);
                vat img1 = 'data:image/jpeg;base64,' + arrayBufferToBase64(e.data.slice(21, blobLen ));
               var img2 = "data:image/jpeg;base64," + arrayBufferToBase64(e.data.slice(21 + blobLen, len - blobLen + 21)); 
    };
假设您的C#代码生成的endian数据很少,您应该能够使用以下类型从
Uint8Array
中提取
Uint32

var data = new Uint8Array(e.data);
var dataView = new DataView(data.buffer);
var blobLen = dataView.getUint32(17, true); // false for big-endian

你能提供你正在接收的输入的例子吗?答案取决于字节编码的尾数。我假设“4位”的意思是“4元素”。你能给我一些代码吗?我不清楚4位字节数组是什么意思。4位字节是。。。不寻常…我不在电脑旁,所以回敬时会这么做谢谢。这看起来可以完成任务,但明天早上必须进行测试。谢谢,稍后将更新:)
var data = new Uint8Array(e.data);
var dataView = new DataView(data.buffer);
var blobLen = dataView.getUint32(17, true); // false for big-endian