Хотите знать, как взять массив небольших чисел , представляющих большее число , и преобразовать его в это большее число, и наоборот.
Я не совсем уверен, какчтобы на самом деле представить это, но суть в следующем.
Скажем, у вас есть набор из 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))
}
}