2012-09-26 17:14:51 +0000 2012-09-26 17:14:51 +0000
27
27

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

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

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

Ответы (6)

20
20
20
2017-04-20 01:48:01 +0000

Как упоминалось ранее, формула =DEC2HEX(A1) конвертируется в гекс, а DEC2HEX(A1,8) - в гекс с префиксом 0 для обозначения 32 бит. В то время как добавление ведущего 0 делает числа более читабельными, особенно если вы используете шрифт с фиксированной точкой, шестнадцатеричная и десятичная версии могут смешиваться, когда все цифры в числе случайно окажутся 0-9 (например, 327701=50015).

Улучшением является добавление префикса “0x”. Есть 2 способа сделать это. =“0x”&DEC2HEX(A1,8) выполнит трюк, но это изменит поле на текстовое, так что его больше нельзя будет легко использовать в формулах. Другой метод - использование пользовательского формата. Если применить к ячейке пользовательский формат “0x”@, то значение ячейки все равно можно использовать в уравнении. Примеры:

╔═══╦════════════════╦════════════╦═════════════════════════════╦═══════════════╗ ║ ║ A ║ B ║ ║ ║ ╠═══╬════════════════╬════════════╬═════════════════════════════╬═══════════════╣ ║ 1 ║ ║ Value ║ Corresponding Formula ║ Number Format ║ ║ 2 ║ Decimal ║ 11162790 ║ 11162790 ║ General ║ ║ 3 ║ Hex ║ AA54A6 ║ =DEC2HEX(B2) ║ General ║ ║ 4 ║ leading 0's ║ 00AA54A6 ║ =DEC2HEX(B2,8) ║ General ║ ║ 5 ║ Text 0x prefix ║ 0x00AA54A6 ║ =DEC2HEX(B2,8) ║ "0x"@ ║ ║ 6 ║ Text 0x prefix ║ 0x00AA54A6 ║ ="0x" & DEC2HEX(B2,8) ║ General ║ ║ 7 ║ Use B5 ║ AA54A600 ║ =DEC2HEX(HEX2DEC(B5) \* 256) ║ General ║ ║ 8 ║ Use B5 ║ 0xAA54A600 ║ =DEC2HEX(HEX2DEC(B5) \* 256) ║ "0x"@ ║ ║ 9 ║ Try to use B6 ║ #NUM! ║ =DEC2HEX(HEX2DEC(B6) \* 256) ║ General ║ ╚═══╩════════════════╩════════════╩═════════════════════════════╩═══════════════╝

Однако, большие числа с разными цифрами все равно могут быть трудночитаемыми, поэтому я люблю ставить запятые в десятичные числа, а “_” в шестнадцатеричные. Сначала нужно получить верхний и нижний 16 бит числа. Верхние 16 бит 32-битного числа можно получить с помощью = INT( A1 / 2^16 ). Разделение на 2^16 действует как сдвиг вправо на 16 бит, а INT удаляет дробный остаток. MOD можно использовать для получения младших 16 бит любого 32- или 64-битного числа; =MOD(A1, 2^16). MOD эффективно получает обратно остаток, то есть нижние 16 бит. Вот таблица, которая показывает это в действии. ╔═══╦═════════════╦═══════════════╦════════════════════════════════════╦═════════╗ ║ ║ A ║ B ║ ║ ║ ╠═══╬═════════════╬═══════════════╬════════════════════════════════════╬═════════╣ ║ 1 ║ ║ Value ║ Corresponding Formula ║ Format ║ ║ 2 ║ Decimal ║ 3,098,743,209 ║ 3098743209 ║ #,##0 ║ ║ 3 ║ Upper Bytes ║ B8B3 ║ =DEC2HEX(INT( B2/2^16 ), 4) ║ General ║ ║ 4 ║ Lower Bytes ║ 11A9 ║ =DEC2HEX(MOD( B2, 2^16 )) ║ General ║ ║ 5 ║ Full Number ║ 0xB8B3\_11A9 ║ ="0x" & DEC2HEX(INT( B2/2^16 ), 4) ║ General ║ ║ ║ ║ ║ & "\_" & DEC2HEX(MOD(B2, 2^16), 4) ║ ║ ╚═══╩═════════════╩═══════════════╩════════════════════════════════════╩═════════╝


BTW, я должен сказать большое спасибо https://ozh.github.io/ascii-tables/ . Я использовал эту ссылку для создания ASCII текстовых таблиц. Я просто скопировал таблицу из моей таблицы excel в ее раздел Input, и она автоматически создала красивую компоновку текста в юникоде.

16
16
16
2012-09-26 17:24:39 +0000

Если вы хотите отформатировать ячейку так, чтобы можно было ввести десятичное число и автоматически отобразить его как шестнадцатеричное, то это невозможно. Ячейку можно либо отформатировать как текст и напрямую вводить шестнадцатеричные числа (но учтите, что Excel не может использовать их для вычислений), либо использовать функции DEC2HEX() и HEX2DEC() для преобразования между базовыми 10 и 16.

7
7
7
2012-09-26 17:20:16 +0000

Если ячейка, подлежащая конвертации, равна A1 используйте =DEC2HEX(A1).

4
4
4
2013-12-31 03:16:44 +0000

Если вам необходимо выполнить математические операции над числами, преобразованными в гекс, сначала преобразовать их в десятичные числа, выполнить операцию, а затем преобразовать обратно в гекс.

Например, если ячейка A1 имеет шестнадцатеричное число, такое, как было бы создано по этой формуле:

=DEC2HEX(17)

, который будет отображаться как 11, а ячейка A2 имеет формулу:

=DEC2HEX(165)

, которые будут отображаться как A5, и вы хотите сложить их вместе, тогда эта формула получит нужный результат:

, который будет отображаться как B6

1
1
1
2018-07-25 14:35:12 +0000
=REPT("0",4-LEN(DEC2HEX(B3)))&DEC2HEX(B3)

Формула REPT повторяет “0”, исходя из длины шестнадцатеричной строки, которая генерируется путем преобразования ее из десятичного числа, и желаемой длины HEX-строки. В этом примере я ищу генерацию HEX-строк длиной 4.

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

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

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

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

0
0
0
2017-01-19 19:55:02 +0000

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

SWITCH(LEN(DEC2HEX(B6)),1,"000"&DEC2HEX(B6),2,"00"&DEC2HEX(B6),3,"0"&DEC2HEX(B6),4,DEC2HEX(B6))

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

13
8
4
3
4