想知道如何获取代表较大数字的较小数字的数组,并将其转换为较大的数字,反之亦然。
我不确定如何实际表示,但是要点如下。
假设您有一堆4位数字:
[ 3, 2, 5, 13, 2, 8, 1, ... ]
想知道如何计算最终数字。我不太清楚我的意思是什么,但是我想了解的是...我不想只是添加数字:
3 + 2 + 5 + 13 + 2 + 8 + 1 = 34
我不想只合并这些位。
00000011 + 00000010 + 00000101 + ...
(3) + (2) + (5) + ...
=
000000110000001000000101
相反,我想撤销以下过程。假设我有一个很大的数字,例如2147483650
(略大于32位整数)。我想将该整数存储在4位块的数组中。也许这些块看起来像这样:
[ 3, 2, 5, 13, 2, 8, 1, ... ]
所以这是主要目标。如何:
但是也许大整数是32位,小整数是2位,或者也许是8位,依此类推。基本上是一种通用的说法:
function divideLargeIntoArrayOfSmall(integer, smallBitSize) {
if (smallBitSize == 4) {
return integer.splitIntoBitChunksOf(4)
} else if (smallBitSize == 2) {
return integer.splitIntoBitChunksOf(2)
} else if (smallBitSize == 8) {
return integer.splitIntoBitChunksOf(8)
} else if (smallBitSize == 16) {
return integer.splitIntoBitChunksOf(16)
}
}
function composeIntoSingleLarge(array, itemBitSize) {
if (itemBitSize == 4) {
// array.sum(integerFromBitSize(4))
} else if (itemBitSize == 2) {
// array.sum(integerFromBitSize(2))
} else if (itemBitSize == 8) {
// array.sum(integerFromBitSize(8))
} else if (itemBitSize == 16) {
// array.sum(integerFromBitSize(16))
}
}