作为Store 2 4-bit numbers in 1 8 bit number的后续,我想知道是否有一个概括,您可以将 n x 位数字存储到 m y 位数字中。例如,也许您可以将 5 个 8 位数字存储为 3 个 15 位数字。或者可能将 2 个 8 位数字转换为 1 个 16 位数字,或者将 3 个 16 位数字转换为 2 个 32 位数字。想知道对执行此操作的过程进行编码和解码的实现是什么,或者是否不可能。
就像是:
function encode(i, s1, n, s2) {
// i = array of input bytes
// s1 = size of input bytes
// n = number of output bytes
// s2 = size of output bytes
}
function decode(i, s1, n, s2) {
}
根据下面的答案,我尝试将其翻译为 JavaScript,但不明白任何真正的含义,并且认为它不起作用。
function encode(input, inputSize, outputSize, callback) {
var buffer = 0
var bbits = 0
var mask = (1 << outputSize) - 1
while (bbits < outputSize) {
buffer |= (input << bbits)
bbits += inputSize
}
while (bbits >= outputSize) {
callback(buffer & mask)
buffer >>= outputSize
bbits -= outputSize
}
}