我指的是一个Unicode编码的byte[]转成字符串例如[74,85,49,0,50,0,51,0] 转成 "啊123" 而不是 "74,85,49,0,50,0,51,0"大哥大姐们帮帮忙吧~应该不是什么难的事可是我就是不知道~

解决方案 »

  1.   


        var a = [74,85,49,0,50,0,51,0];
        var s = "";
        for(var i=0;i<a.length ;i++){
            s +=String.fromCharCode(a[i]);
        }
        alert(s)
    //这个只能转英文和数字,汉字给出的信息不够,不知道要怎么提取或者判断汉字,及其长度或者分隔
      

  2.   

    楼上你太帅了
    String.fromCharCode(a[i]|(a[++i]<<8))
    这样就行了 没搞过js没看见还有fromCharCode这个方法哈哈
      

  3.   


    var a = [74,85,49,0,50,0,51,0];
    alert(a.join(""));//说了用join...
      

  4.   

    JavaScript中的数组有个join方法,它能将数组中的元素连接成字符串,join需要一个参数来决定数组元素之间怎样连接;
    例如:var array=[1,2,3,4,5,6];//声明一个数组
    document.write(array.join("+"));//join的参数为+,标示各个元素之间用+号连接结果:
    1+2+3+4+5+6
    如果你不想用任何的连接符;可以将join参数改为空字符串;document.write(array.join(""));//join的参数为"",标示各个元素之间用空串连接;结果:
    123456
      

  5.   

    function byte2char(bytes) {
    // by lazyboy
    var result = '', b = '', s = '';

    for(var i=0; i < bytes.length; i=i+2) {
    // 要考虑高低位的位置,现在给出的数据是 高位在后
    s = bytes[i];
    b = bytes[i+1];

    // 转换成16进制
    if(b < 16) {
    b = '0'.concat(b.toString(16));
    } else {
    b = b.toString(16);
    }

    s = s.toString(16);

    // 由js的unicode编码转换成实际字符
    result += unescape('%u' + b + s);
    }
    return result;
    }arr = [74,85,49,0,50,0,51,0];document.write(byte2char(arr));
      

  6.   


    var a = [74,85,49,0,50,0,51,0];var s = String.fromCharCode.apply("", a.join(',').replace(/(\d+),(\d+)/g, function($,l,h){return h<<8|l;}).split(","));
      

  7.   

    恩楼上的方法不错 不过数组转成字符串 一点点匹配 再转成数组感觉有点不爽啊~ 还不如直接点
    var a = [74,85,49,0,50,0,51,0],arr = [];
    for (var i = 0 ; i < a.length ; ++i)
          arr.push(a[i]|a[++i]<<8);
    var str = String.fromCharCode.apply("", arr);
    虽然多了几行。。
    总之问题解决了多谢大家啦~