js 二进制 十进制 十六进制 buffer 字节数组 相互转换

1.举例

十进制: -29 227
十六进制: 0xE3
二进制补码:1110 0011
在这里插入图片描述

在这里插入图片描述

2.应用实例

function startOta() {
//REQUEST_CTRL_OTA_START = 0
//maxSegmentBytesLength = 19
    var startBytes = [REQUEST_CTRL_OTA_START, maxSegmentBytesLength, maxSegmentBytesLength >> 8]
    //fireware是一个bin文件转成的uint8Array
    var crcHex = crc32(firmware)
    var lengthHex = firmware.length.toString(16)
    var arr1 = startBytes.concat(Str2Bytes(crcHex))
    var arr2 = arr1.concat(Str2Bytes(lengthHex))
    console.log(Bytes2Str(arr2))
     otaSendIntArr(arr2)   
}

//十六进制字符串转字节数组(反过来)
function Str2Bytes(str) {
    switch (str.length) {
        case 3:
            str = "00000" + str;
            break;
        case 4:
            str = "0000" + str;
            break;
        case 5:
            str = "000" + str;
            break;
        case 6:
            str = "00" + str;
            break;
        case 7:
            str = "0" + str;
            break;

    }
    var pos = 0;
    var len = str.length;
    len /= 2;
    var hexA = new Array();
    pos = len * 2 - 2
    for (var i = 0; i < len; i++) {
        var s = str.substr(pos, 2);
        var v = parseInt(s, 16);
        hexA.push(v);
        pos -= 2;
    }
    return hexA;
}

//字节数组转十六进制字符串
function Bytes2Str(arr) {
    var str = "";
    for (var i = 0; i < arr.length; i++) {
        var tmp = arr[i].toString(16);
        if (tmp.length == 1) {
            tmp = "0" + tmp;
        }
        str += tmp;
    }
    return str;
}

3.参考博客

JS中二进制与十进制的相互转换
JavaScript 十进制和十六进制互转
16进制与buffer相互转换
JavaScript十六进制字符串和字节数组相互转换

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页