欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

16进制与buffer相互转换

程序员文章站 2024-03-18 14:18:34
...

16进制与buffer相互转换

  • 一个字节是8位,相当于16进制2位,因此为了方便表示,很多情况下,buffer打印出来是16进制显示的,但是本质上还是2进制,就好比buffer里边的 11111111 打印出来之后就会显示 ff
首先说说16进制转buffer
  • 假设有一个数组,[1a, 2b, 3c, 4d, 5e, 6f]想要转成buffer,代码如下:
var array = ['1a', '2b', '3c', '4d', '5e', '6f']
var hex_array = array.map(el=>parseInt(el, 16))
var uarray = new Uint8Array(hex_array)
var buf = Buffer.from(uarray)
console.log(buf)

// 打印结果
<Buffer 1a 2b 3c 4d 5e 6f>
  • 基于上面的思路,可以封装成一个函数:
// 16进制转buffer
function hex_to_buffer(__array){
    if(!Array.isArray(__array)){
        return hex_array([__array])
    }
    var hex_array = __array.map(el=>parseInt(el, 16))
    var uarray = new Uint8Array(hex_array)
    return Buffer.from(uarray)
}
buffer转16进制
  • 以上一个例子为例,如何实现buffer转16进制,代码如下:
function hex_to_buffer(__array){
    if(!Array.isArray(__array)){
        return hex_array([__array])
    }
    var hex_array = __array.map(el=>parseInt(el, 16))
    var uarray = new Uint8Array(hex_array)
    return Buffer.from(uarray)
}

var array = ['1a', '2b', '3c', '4d', '5e', '6f']
var buf = hex_to_buffer(array) // 获取buffer <Buffer 1a 2b 3c 4d 5e 6f>
// buffer转16进制
var uarray = Array.prototype.slice.call(buf)
var hex_array = uarray.map(el=>Number(el).toString(16))
console.log(hex_array)
  • 基于上面的思路,可以封装一个函数:
// buffer转16进制
function buffer_to_hex(__buffer){
    var uarray = Array.prototype.slice.call(__buffer)
    return uarray.map(el=>Number(el).toString(16))
}

大功告成

相关标签: javascript

上一篇: Debian Linux 6.0.3 发布

下一篇: