Я хотел бы отформатировать ячейку в Microsoft Excel 2007 в шестнадцатеричном формате, но не могу найти, как это сделать.
Есть ли встроенный способ изменить основание счисления с 10 на 16 для ячейки?
решение1
Как упоминалось ранее, формула =DEC2HEX(A1) преобразуется в шестнадцатеричное число, а DEC2HEX(A1,8) преобразуется в шестнадцатеричное число с префиксом 0 для обозначения 32 бит. Хотя добавление начальных нулей делает числа более читабельными, особенно если вы используете шрифт с фиксированной точкой, шестнадцатеричные и десятичные версии могут перепутаться, когда все цифры в числе окажутся в диапазоне от 0 до 9 (например, 327701=50015).
Улучшение заключается в добавлении префикса "0x". Есть 2 способа сделать это. ="0x"&DEC2HEX(A1,8) сработает, но изменит поле на текстовое, поэтому его больше нельзя будет легко использовать в формулах. Другой метод — использовать пользовательский формат. Если вы примените пользовательский формат "0x"@ к ячейке, то значение ячейки все равно можно будет использовать в уравнении. Примеры:
╔═══╦═════════════════╦═════════════╦═════════════════════════════════════════════════════════════════╗ ║ ║ А ║ Б ║ ║ ║ ╠═══╬═════════════════╬═══════════════╬═══════════════════════════════════════════════╣ ║ 1 ║ ║ Значение ║ Соответствующая формула ║ Формат числа ║ ║ 2 ║ Десятичный ║ 11162790 ║ 11162790 ║ Общий ║ ║ 3 ║ Шестнадцатеричный ║ 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). MOD фактически возвращает остаток, который является нижними 16 битами. Вот таблица, которая показывает это в действии.
╔═══╦══════════════╦══════════════╦══════ ══════════════════════════════╦═════════╗ ║ ║ А ║ Б ║ ║ ║ ╠═══╬═══════════════╬═══════════════╬═══════ ════════════════════════════════╬═════════╣ ║ 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) ║ ║ ╚═══╩════════════════╩════════════════╩═══════ ═══════════════════════════════╩══════════╝
Кстати, я должен выразить огромную благодарностьhttps://ozh.github.io/ascii-tables/. Я использовал эту ссылку для создания текстовых таблиц ASCII. Я просто скопировал таблицу из своей таблицы Excel в ее раздел «Ввод», и она автоматически создала красивую раскладку текста Unicode.
решение2
Если вы хотите отформатировать ячейку так, чтобы можно было ввести десятичное число и автоматически отобразить его как шестнадцатеричное число, то это невозможно. Вы можете либо отформатировать ячейку как текст и ввести шестнадцатеричные числа напрямую (но учтите, что Excel не может использовать их для вычислений), либо использовать функции DEC2HEX()
и HEX2DEC()
для преобразования между основанием 10 и основанием 16.
решение3
Если ячейка, которую необходимо преобразовать, A1
используется =DEC2HEX(A1)
.
решение4
=REPT("0",4-LEN(DEC2HEX(B3)))&DEC2HEX(B3)
Формула REPT повторяет "0" на основе длины шестнадцатеричной строки, которая генерируется путем преобразования ее из десятичной, и желаемой длины строки HEX. В этом примере я пытаюсь сгенерировать строки HEX длиной 4.
Затем вы объединяете начальные нули с фактической строкой HEX, тем самым генерируя значение HEX желаемой длины.
Преимущества:
- Легкое копирование формулы на другой рабочий лист. Только с двумя ссылками на ячейки с десятичным значением, B3, для переназначения.
- Результаты этой формулы рассматриваются Excel как значения HEX. Вы также можете использовать префикс "0x", но я не считаю это необходимым.
Примечание: Я использую это, когда копирую строки HEX, и они копируются с разной длиной. Сначала я генерирую столбец десятичных значений из исходных значений, к которым затем могу применить эту формулу.