概述

用于数据处理的通用脚本

String 转 byte[]

// String 转 byte[]
function stringToByte(str) {
    var bytes = new Array();
    var len, c;
    len = str.length;
    for (var i = 0; i < len; i++) {
        c = str.charCodeAt(i);
        if (c >= 0x010000 && c <= 0x10FFFF) {
            bytes.push(((c >> 18) & 0x07) | 0xF0);
            bytes.push(((c >> 12) & 0x3F) | 0x80);
            bytes.push(((c >> 6) & 0x3F) | 0x80);
            bytes.push((c & 0x3F) | 0x80);
        } else if (c >= 0x000800 && c <= 0x00FFFF) {
            bytes.push(((c >> 12) & 0x0F) | 0xE0);
            bytes.push(((c >> 6) & 0x3F) | 0x80);
            bytes.push((c & 0x3F) | 0x80);
        } else if (c >= 0x000080 && c <= 0x0007FF) {
            bytes.push(((c >> 6) & 0x1F) | 0xC0);
            bytes.push((c & 0x3F) | 0x80);
        } else {
            bytes.push(c & 0xFF);
        }
    }
    return bytes;
}

byte[] 转 String

// byte[] 转 String
function byteToString(arr) {
    if(typeof arr === 'string') {
        return arr;
    }
    var str = '',
        _arr = arr;
    for(var i = 0; i < _arr.length; i++) {
        var one = _arr[i].toString(2),
            v = one.match(/^1+?(?=0)/);
        if(v && one.length == 8) {
            var bytesLength = v[0].length;
            var store = _arr[i].toString(2).slice(7 - bytesLength);
            for(var st = 1; st < bytesLength; st++) {
                store += _arr[st + i].toString(2).slice(2);
            }
            str += String.fromCharCode(parseInt(store, 2));
            i += bytesLength - 1;
        } else {
            str += String.fromCharCode(_arr[i]);
        }
    }
    return str;
}

hex[] 转 String (seat 占位数)

// hex[] 转 String (seat 占位数)
function toHexString(byteArray,seat) {
  return Array.from(byteArray, function(byte) {
      if(seat == 2){
        return ('000' + (byte & 0xFFFF).toString(16)).slice(-4); 
      }else{
        return ('0' + (byte & 0xFF).toString(16)).slice(-2);   
      }
  }).join('')
}

hexString 转 byte[]

// hexString 转 byte[]
function toByteArray(hex){
    var buffer = new ArrayBuffer((hex.length) / 2);
    var byteStream = new Uint8Array(buffer);
    var i = 0;
    while (hex.length >= 2) {
        var x = parseInt(hex.substring(0, 2),16);
        hex = hex.substring(2, hex.length);
        byteStream[i++] = x;
    }
    return byteStream;
}
文档更新时间: 2022-08-24 16:44   作者:管理员