Как отформатировать ячейку Microsoft Excel 2007 в шестнадцатеричном формате?
Я хотел бы отформатировать ячейку в Microsoft Excel 2007 в шестнадцатеричном формате, но я не нашел, как это сделать.
Есть ли встроенный способ изменить базу с 10 на 16 для клетки?
6 ответов
Как упоминалось ранее, формула =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) ║ Общие сведения ║ ╚═══╩════════════════╩════════════╩═════════════════════════════╩═══════════════╝
Однако большие числа с разными цифрами все еще трудно читать, поэтому я предпочитаю ставить запятые в десятичные числа, а "_" - в шестнадцатеричные числа. Сначала вам нужно получить верхний и нижний 16 бит числа. Старшие 16 бит 32-битного числа могут быть получены с помощью = INT( A1 / 2^16). Деление на 2 ^ 16 действует как сдвиг вправо на 16 бит, а INT удаляет дробный остаток. MOD может использоваться для получения младших 16 бит любого 32- или 64-битного числа; =MOD(A1, 2^16). Мод эффективно возвращает остаток, то есть младшие 16 бит. Вот таблица, которая показывает это в действии.
╔═══╦═════════════╦═══════════════╦═══════════════ ═════════════════════╦═════════╗ ║ ║ A ║ B ║ ║ ║ ╠═══╬═════════════╬═══════════════╬═══════════════ ═════════════════════╬═════════╣ ║ 1 ║ ║ Значение ║ Соответствующая формула ║ Формат ║ ║ 2 ║ Десятичное число ║ 3098743209 ║ 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) ║ ║ ╚═══╩═════════════╩═══════════════╩════════════════════════════════════╩═════════╝
Кстати, я должен поблагодарить https://ozh.github.io/ascii-tables/. Я использовал эту ссылку для создания текстовых таблиц ASCII. Я просто скопировал таблицу из моей таблицы Excel в ее раздел ввода, и она автоматически создала красивую разметку текста в юникоде.
Если вы хотите отформатировать ячейку, чтобы можно было ввести десятичное число и автоматически отобразить ее как шестнадцатеричное число, то это невозможно. Вы можете либо отформатировать ячейку как текст и ввести шестнадцатеричные числа напрямую (но учтите, что Excel не может использовать их для расчетов), либо использовать DEC2HEX()
а также HEX2DEC()
функции для преобразования между основанием 10 и основанием 16.
Если ячейка для преобразования A1
использование =DEC2HEX(A1)
,
Если вам нужно выполнить математические операции с числами, преобразованными в шестнадцатеричные числа, сначала преобразуйте их в десятичные числа, выполните операцию, а затем верните обратно в шестнадцатеричное число.
Например, если ячейка 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 желаемой длины.
Преимущества:
- Простое копирование формулы в другой лист. Только две ссылки на ячейку для десятичного значения, B3, для переназначения.
- Результаты этой формулы обрабатываются Excel как значения HEX. Вы также можете добавить префикс "0x", но я не считаю это необходимым.
Примечание: я использую это, когда копирую строки HEX, и они копируются с различной длиной. Сначала я генерирую столбец десятичных значений из исходных значений, с которыми затем могу запустить эту формулу.
Вот решение, которое я нашел, чтобы убедиться, что я могу отформатировать эти шестнадцатеричные числа в формат HTML:
SWITCH(LEN(DEC2HEX(B6)),1,"000"&DEC2HEX(B6),2,"00"&DEC2HEX(B6),3,"0"&DEC2HEX(B6),4,DEC2HEX(B6))