繁体   English   中英

如何将字节字符串转换为数字?

[英]How to convert byte string into Number?

我有一个以Little Endian格式编码的字符串(首先是最低有效字节),我想将其解码为Number。 对于编码器,最后一个字节的第一位反映该数字是正数还是负数。 有谁知道如何做到这一点?

这是我的解码器:

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;
    }

谢谢。

如果您从右向左读取字符串,会更容易。 您可以执行以下操作:

/* 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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM