Как отформатировать ячейку Microsoft Excel 2007 в шестнадцатеричном формате?

106375
WilliamKF

Я хотел бы отформатировать ячейку в Microsoft Excel 2007 в шестнадцатеричном формате, но я не нашел, как это сделать.

Есть ли встроенный способ изменить базу с 10 на 16 для клетки?

26

6 ответов на вопрос

16
Indrek

If you want to format a cell so that you can type in a decimal number and automatically have it displayed as a hexadecimal number, then that's not possible. You can either format the cell as text and enter hexadecimal numbers directly (but note that Excel cannot use those for calculations), or use the DEC2HEX() and HEX2DEC() functions to convert between base 10 and base 16.

Для справки также существует `DEC2BIN ()`, который преобразуется в двоичный файл. Для двоичного кода с фиксированной шириной используйте что-то вроде `= TEXT (DEC2BIN (A1)," 0000 ")` Tor Klingberg 8 лет назад 1
В локализованном в Германии Excel 2013, DEC2HEX и HEX2DEC приводят к сообщению об ошибке #NAME ?. С помощью справки Office я мог узнать, что функции называются DEZINHEX и HEXINDEZ, соответственно. Bernhard Hiller 7 лет назад 1
Как расширить = 0x1234AB до = 0x001234AB (мне нужна фиксированная ширина 8)? Danijel 7 лет назад 0
@Danijel Используйте второй параметр DEC2HEX. Vincent G 7 лет назад 0
13
OldEmbeddedGuy

Как упоминалось ранее, формула = 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 ║ Десятичное число ║ 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 в ее раздел ввода, и она автоматически создала красивую разметку текста в юникоде.

7
pnuts

If cell to be converted is A1 use =DEC2HEX(A1).

Вы можете добавить ведущий «0x» к вашему шестнадцатеричному значению. Используйте `=" 0x "& DEC2HEX (A1,4)`, чтобы получить результат, похожий на `0x1AF2`. User5910 7 лет назад 2
4
TestIt

If you need to perform mathematical operations on numbers converted to hex, first convert them to decimal, perform the operation, then convert back to hex.

For example, if cell A1 has a hex number, such as would be created from this formula:

=DEC2HEX(17) 

which would be displayed as 11, and cell A2 has formula:

=DEC2HEX(165) 

which would be displayed as A5, and you want to add them together, then this formula would get the desired result:

=DEC2HEX(HEX2DEC(A1)+HEX2DEC(A2)) 

which would be displayed as B6

1
WSimpson
=REPT("0",4-LEN(DEC2HEX(B3)))&DEC2HEX(B3) 

Формула REPT повторяет «0» в зависимости от длины шестнадцатеричной строки, сгенерированной путем преобразования ее из десятичной, и требуемой длины строки HEX. В этом примере я хочу сгенерировать строки HEX длиной 4.

Затем вы объединяете ведущие нули в фактическую строку HEX, тем самым генерируя значение HEX желаемой длины.

Преимущества:

  1. Простое копирование формулы в другой лист. Только две ссылки на ячейку для десятичного значения, B3, для переназначения.
  2. Результаты этой формулы обрабатываются Excel как значения HEX. Вы также можете добавить префикс «0x», но я не считаю это необходимым.

Примечание: я использую это, когда копирую строки HEX, и они копируются с различной длиной. Сначала я генерирую столбец десятичных значений из исходных значений, с которыми затем могу запустить эту формулу.

0
Stephen Frick

Вот решение, которое я нашел, чтобы убедиться, что я могу отформатировать эти шестнадцатеричные числа в формат HTML:

SWITCH(LEN(DEC2HEX(B6)),1,"000"&DEC2HEX(B6),2,"00"&DEC2HEX(B6),3,"0"&DEC2HEX(B6),4,DEC2HEX(B6)) 
Объяснение того, что происходит в вашем коде, сделает ответ более полезным. WilliamKF 7 лет назад 2

Похожие вопросы