有时候吧,与硬件交互时,常常需要用十六进制来通信,下面罗列一些简单操作
整型之间互转
十进制转十六进制
1 2
| let num = 100; console.log(num.toString(16));
|
十六进制转十进制
1 2
| let num = 0x100; console.log(num.toString(10));
|
用toString来进行转换,其它进制也是同样的操作
整型与Buffer互转
整型转Buffer
1 2 3
| let num = 0xA5AB; console.log(Buffer.alloc(2, num.toString(16), 'hex')); console.log(Buffer.from(num.toString(16), 'hex'));
|
两种方式均可以转换成希望的结果
再看一个例子
1 2 3
| let num = 0x0400; console.log(Buffer.alloc(2, num, 'hex')); console.log(Buffer.from(num.toString(16), 'hex'));
|
两种方式的输出都不对,这是因为第一位为0,buffer接收时是按0x400接收的,所以就出现了上面的情况,为了能正常转换为两个字节,只能自己处理一下了
1 2 3
| let num = 0x0400; console.log(Buffer.alloc(2, `0${num.toString(16)}`, 'hex')); console.log(Buffer.from(`0${num.toString(16)}`, 'hex'));
|
这时能正常转换
Buffer转整型
1 2 3
| let num = 0x0400; let tem = Buffer.from(`0${num.toString(16)}`, 'hex').toString('hex'); console.log(parseInt(`0x${tem}`));
|
这样即可