Я пытаюсь создать формулы Excel, чтобы найти шестнадцатеричные значения для каждого бита. У меня есть лист Excel, как показано ниже.
Здесь у меня есть 32-битное двоичное значение (пример: от A1 до AE1) и еще одно 32-битное двоичное значение (пример: от A6 до AE6). Моя цель — написать формулы для первого шестнадцатеричного значения (32-битное двоичное значение) и следующего шестнадцатеричного значения (следующее 32-битное двоичное значение). Наконец, мне нужно получить 64-битное значение, объединив первое и второе 32-битные значения.
Результат 1: формат шестнадцатеричного значения (32-битное двоичное значение): 0xFFFFFFFF.
Результат 2: формат шестнадцатеричного значения (следующее 32-битное двоичное значение): 0xFFFFFFFF.
Конечный результат: Шестнадцатеричное значение 64-битного двоичного формата: 0xFFFFFFFFFFFFFFFF.
Как я могу написать три простые формулы, чтобы найти эти три значения Hexa? Любые предложения или пример?
@cybernetic.nomad — не очень полезно BIN2HEX()
ограничено 10 битами.
Уже есть ответ о том, как bin2dec для чисел длиной более 10 бит в Excel, поэтому адаптировать его для своих нужд должно быть достаточно легко. Если у вас Excel 365:
=LET(
string,TEXTJOIN("", TRUE, A2:AF2),
dec,SUMPRODUCT(--MID(string,LEN(string)+1-ROW(INDIRECT("1:"&LEN(string))),1),(2^(ROW(INDIRECT("1:"&LEN(string)))-1))),
DEC2HEX(dec))
Или используйте больше возможностей Excel 365:
=LET(
string, TEXTJOIN("", TRUE, A2:AF2),
len, LEN(string),
dec, SUMPRODUCT(--MID(string, SEQUENCE(len, 1, len, -1), 1), 2^(SEQUENCE(len, 1, 0))),
DEC2HEX(dec))
Если у вас нет Excel 365, вы можете использовать вспомогательную ячейку.
Это также может работать с входами с 32 столбцами, но не уверен насчет знакового бита:
=CONCAT("0x", BIN2HEX(MID(CONCAT(--A1:AF1), SEQUENCE(, 4, 1, 8), 8), 2))
=CONCAT(
"0x",
BIN2HEX(
MID(CONCAT(--A1:AF1, --A6:AF6), SEQUENCE(, 8, 1, 8), 8),
2
)
)
Вы не заботитесь о последовательности MSB...LSB выборок. В вопросе все перевернуто, поэтому ваша формула дает неправильное значение.
Большое спасибо @Blackcat, я так и подозревал. Вот почему я показал позиции битов ниже. Поспим и обновим завтра :)
Спасибо за предложение. На данный момент мне не требуется знаковое значение.
BIN2HEX()
может быть? Что вы пробовали?