Javascript 如何将字节字符串转换为数字?
我有一个以小尾端格式编码的字符串(首先是最低有效字节),我想把它解码成一个数字。对于编码器,最后一个字节的第一位反映数字是正数还是负数。有人知道怎么做吗 这是我的解码器:Javascript 如何将字节字符串转换为数字?,javascript,numbers,bit-manipulation,byte,Javascript,Numbers,Bit Manipulation,Byte,我有一个以小尾端格式编码的字符串(首先是最低有效字节),我想把它解码成一个数字。对于编码器,最后一个字节的第一位反映数字是正数还是负数。有人知道怎么做吗 这是我的解码器: decode:function(str,type){ var num=0; var len=size(type)-(type.signed?1:0); var totalBits=0; for(var i=0;i<len;i++){
decode:function(str,type){
var num=0;
var len=size(type)-(type.signed?1:0);
var totalBits=0;
for(var i=0;i<len;i++){
num+=(str.charCodeAt(i)<<totalBits));
totalBits+=8;
}
if(type.signed){
var b=str.charCodeAt(size(type)-1);
var neg=(b>=128);
if(neg){
b-=128;
}
num+=b;
num*=(neg?-1:1);
}
return num;
}
解码:函数(str,类型){
var num=0;
var len=大小(类型)-(类型签名?1:0);
var totalBits=0;
对于(var i=0;i来说,如果从右到左读取字符串会更容易。您可以执行以下操作:
/* decode. assume size(str) > 0 */
function (str,type) {
var len = size(str);
var num = str.charCodeAt(len - 1);
if (type.signed && (num >= 128)) {
num = num - 256;
}
for (var i = (len - 2); i >= 0; i--) {
num = 256 * num + str.charCodeAt(i);
}
return num;
}
如果那是你的编码器,为什么叫“解码”?它看起来确实像是从字符串解码。对不起,那是我的解码器…输入错误:)