in javascript numbers are always allocated as double precision floats。如果您没有在没有压缩的情况下将大量这些作为二进制文件发送,或者不需要节省内存,那么这很好。如果你需要缩小这些数字,你会怎么做?
明显的目标是将数字存储到尽可能小的字节大小,例如208:1字节,504:2字节。更好的是比特大小的最小数量,例如208:8比特,504:9比特。
示例:
//myNetwork is a supposed network API that sends as binary
var x = 208;
myNetwork.send(x); // sends 01000011010100000000000000000000
myNetwork.send(x.toString()); //sends 001100100011000000111000
还有typed arrays,但如果它不是blob或文件,变成类型数组会很棘手。在Javascript中的某些网络API上,原始数据通常在您触摸之前表示为字符串。
答案 0 :(得分:0)
编码
//myNetwork is a supposed network API that sends as binary
var x = 208;
myNetwork.send(String.fromCharCode(x)); //sends 11010000 , also known as Ð
解码
var receivedString = "Ð";
var decodedNum = receivedString.charCodeAt(0); //208
提到的字符串方法是24位,而这只是8位。
这种方法的缺点是,如果你想要小于字节大小的值,显然会有一些浪费。例如,您应该能够以9位存储512个值,但是您将被强制最多16位(2个字节),这是65,535个值,因为在unicode字符中都是字节大小的。但是,如果您将使用全部值,那就没问题了。