16进制与buffer相互转换

本文介绍16进制与Buffer的相互转换。首先讲解如何将16进制数组转换为Buffer,然后展示如何将Buffer转换回16进制,并提供了相应的转换函数示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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))
}
大功告成
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值