JS: Encoding/decoding 优化
JS: Encoding/decoding optimization
我需要 2 个简单的函数来 encode/decode 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]]
}
但我认为它可以做得更容易,有什么建议吗?
是的。这可以使用按位运算符轻松完成。您的代码使用了系统的 endianness,但此代码始终使用 little-endian.
function encode(i, j) {
return i | (j << 8);
}
function decode(x) {
return [x & 0xff, x >> 8];
}
我需要 2 个简单的函数来 encode/decode 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]]
}
但我认为它可以做得更容易,有什么建议吗?
是的。这可以使用按位运算符轻松完成。您的代码使用了系统的 endianness,但此代码始终使用 little-endian.
function encode(i, j) {
return i | (j << 8);
}
function decode(x) {
return [x & 0xff, x >> 8];
}