提问人:butthx 提问时间:7/2/2022 更新时间:7/2/2022 访问量:406
如何在nodejs中将128Int或256Int写入缓冲区
How to write 128Int or 256Int to Buffer in nodejs
问:
我有一个 BigInt,它是 128 位整数,然后我想将该整数转换为缓冲区。170141183460469231731687303715884105728n
但据我所知,nodejs Buffer 不支持 128 位或 256 位整数,只支持 64 位整数。
那么问题来了,如何将整数转换为缓冲区?我在互联网上搜索过,但我什么也没找到。
对不起,如果我的英语不好,谢谢你的回答。
答:
1赞
butthx
7/2/2022
#1
我找到了解决这个问题的方法,我做了循环时间(128Int 的缓冲区长度是 16,256Int 是 32
),然后在 bigint 上用(64Int 的缓冲区长度)向右移动,然后用(缓冲区的最大范围)做 (
&=
)。也许有人找到了比这更好的方法。16
8
*
index of looping
bitwise and
255
function int_128_to_bytes(int){
const bytesArray = [];
for(let i = 0; i < 16; i++){
let shift = int >> BigInt(8 * i)
shift &= BigInt(255)
bytesArray[i] = Number(String(shift))
}
return Buffer.from(bytesArray)
}
console.log(int_128_to_bytes(BigInt(2 ** 127 -1)).toString("hex") // 00000000000000000000000000000080
评论