Ответы:
Как упоминалось ранее, формула = DEC2HEX (A1) преобразуется в шестнадцатеричный код, а DEC2HEX (A1,8) преобразуется в шестнадцатеричный с префиксом 0 для обозначения 32 битов. Хотя добавление начальных 0 делает числа более читабельными, особенно если вы используете шрифт с фиксированной запятой, шестнадцатеричная и десятичная версии могут смешиваться, когда все цифры в номере оказываются 0-9 (например, 327701 = 50015).
Улучшение заключается в добавлении префикса «0x». Есть 2 способа сделать это. = "0x" & DEC2HEX (A1,8) добьется цели, но изменит поле на текстовое поле, поэтому его уже нельзя будет легко использовать в формулах. Другой способ - использовать пользовательский формат. Если вы примените пользовательский формат «0x» @ к ячейке, тогда значение ячейки все еще может быть использовано в уравнении. Примеры:
╔═══╦════════════════╦════════════╦═══════════════ ══════════════╦═══════════════╗ ║ ║ A ║ B ║ ║ ║ ╠═══╬════════════════╬════════════╬═══════════════ ══════════════╬═══════════════╣ ║ 1 ║ ║ Значение ║ Соответствующая формула ║ Числовой формат ║ ║ 2 ║ Десятичное число ║ 11162790 ║ 11162790 ║ Общее ║ ║ 3 ║ Hex ║ AA54A6 ║ = DEC2HEX (B2) ║ Общие сведения ║ ║ 4 ║ ведущие 0 ║ 00AA54A6 ║ = DEC2HEX (B2,8) ║ Общие сведения ║ ║ 5 ║ Текстовый префикс 0x ║ 0x00AA54A6 ║ = DEC2HEX (B2,8) ║ "0x" @ ║ ║ 6 ║ Текстовый префикс 0x ║ 0x00AA54A6 ║ = "0x" & DEC2HEX (B2,8) ║ Общие сведения ║ ║ 7 ║ Использовать B5 ║ AA54A600 ║ = DEC2HEX (HEX2DEC (B5) * 256) ║ Общие сведения ║ ║ 8 ║ Использовать B5 ║ 0xAA54A600 ║ = DEC2HEX (HEX2DEC (B5) * 256) ║ «0x» @ ║ ║ 9 ║ Попробуйте использовать B6 ║ #NUM! ║ = DEC2HEX (HEX2DEC (B6) * 256) ║ Общие сведения ║ ╚═══╩════════════════╩════════════╩═══════════════ ══════════════╩═══════════════╝
╔═══╦═════════════╦═══════════════╦═══════════════ ═════════════════════╦═════════╗ ║ ║ A ║ B ║ ║ ║ ╠═══╬═════════════╬═══════════════╬═══════════════ ═════════════════════╬═════════╣ ║ 1 ║ ║ Значение ║ Соответствующая формула ║ Формат ║ ║ 2 ║ Десятичное число ║ 3 098 743 209 ║ 3098743209 ║ #, ## 0 ║ ║ 3 ║ старшие байты ║ B8B3 ║ = DEC2HEX (INT (B2 / 2 ^ 16), 4) ║ общие сведения ║ ║ 4 ║ младшие байты ║ 11A9 ║ = DEC2HEX (MOD (B2, 2 ^ 16)) ║ общие сведения ║ ║ 5 ║ Полное число ║ 0xB8B3_11A9 ║ = "0x" & DEC2HEX (INT (B2 / 2 ^ 16), 4) ║ Общее ║ "║ ║ ║ &" _ "и DEC2HEX (MOD (B2, 2 ^ 16), 4) ║ ║ ╚═══╩═════════════╩═══════════════╩═══════════════ ═════════════════════╩═════════╝
Если вы хотите отформатировать ячейку, чтобы можно было ввести десятичное число и автоматически отобразить ее в виде шестнадцатеричного числа, то это невозможно. Вы можете форматировать ячейки в виде текста и введите число шестнадцатеричного непосредственно (но обратите внимание , что Excel не может использовать те , для расчетов), или использовать DEC2HEX()
и HEX2DEC()
функцию для преобразования между основанием 10 и основанием 16.
Если ячейка для преобразования является A1
использование =DEC2HEX(A1)
.
="0x"&DEC2HEX(A1,4)
чтобы получить результат, который выглядит как 0x1AF2
.
Если вам нужно выполнить математические операции с числами, преобразованными в шестнадцатеричные числа, сначала преобразуйте их в десятичные числа, выполните операцию, а затем верните обратно в шестнадцатеричное число.
Например, если ячейка A1
имеет шестнадцатеричное число, например, созданное по этой формуле:
=DEC2HEX(17)
который будет отображаться как 11, и ячейка A2
имеет формулу:
=DEC2HEX(165)
который будет отображаться как A5
, и вы хотите добавить их вместе, тогда эта формула получит желаемый результат:
=DEC2HEX(HEX2DEC(A1)+HEX2DEC(A2))
который будет отображаться как B6
=REPT("0",4-LEN(DEC2HEX(B3)))&DEC2HEX(B3)
Формула REPT повторяет «0» в зависимости от длины шестнадцатеричной строки, сгенерированной путем преобразования ее из десятичной, и требуемой длины строки HEX. В этом примере я хочу сгенерировать строки HEX длиной 4.
Затем вы объединяете ведущие нули в фактическую строку HEX, тем самым генерируя значение HEX желаемой длины.
Преимущества:
Примечание: я использую это, когда копирую строки HEX, и они копируются с различной длиной. Сначала я генерирую столбец десятичных значений из исходных значений, с которыми затем могу запустить эту формулу.
Вот решение, которое я нашел, чтобы убедиться, что я могу отформатировать эти шестнадцатеричные числа в формат HTML:
SWITCH(LEN(DEC2HEX(B6)),1,"000"&DEC2HEX(B6),2,"00"&DEC2HEX(B6),3,"0"&DEC2HEX(B6),4,DEC2HEX(B6))
DEC2BIN()
который преобразует в двоичный файл. Для двоичного кода с фиксированной шириной используйте что-то вроде=TEXT(DEC2BIN(A1), "0000")