我需要2个简单的函数来编码/解码2个小(8位)的数字为一个(16位)。
我是这样写的:
function encode(i, j) {
const int16 = new Int16Array(1)
const int8 = new Int8Array(int16.buffer)
int8[0] = i
int8[1] = j
return int16[0]
}
function decode(x) {
const int16 = new Int16Array(1)
int16[0] = x
const int8 = new Int8Array(int16.buffer)
return [int8[0], int8[1]]
}但我认为这件事可以做得更容易,有什么建议吗?
发布于 2020-09-28 22:46:18
是。这可以通过按位运算符轻松完成。您的代码使用了系统的endianness,但是这个总是使用小端。
function encode(i, j) {
return i | (j << 8);
}
function decode(x) {
return [x & 0xff, x >> 8];
}https://stackoverflow.com/questions/64104197
复制相似问题