Come formattare una cella di Microsoft Excel 2007 in esadecimale?


Risposte:


18

Come accennato in precedenza, la formula = DEC2HEX (A1) si converte in esadecimale e DEC2HEX (A1,8) si converte in esadecimale con prefisso 0 per indicare 32 bit. Mentre l'aggiunta degli 0 iniziali rende i numeri più leggibili, soprattutto se si utilizza un carattere a virgola fissa, le versioni esadecimali e decimali possono essere confuse quando tutte le cifre del numero risultano essere 0-9 (ad esempio 327701 = 50015).

Un miglioramento è l'aggiunta del prefisso "0x". Ci sono 2 modi per farlo. = "0x" e DEC2HEX (A1,8) risolveranno il problema, ma cambia il campo in un campo di testo, quindi non può più essere facilmente utilizzato nelle formule. Un altro metodo è utilizzare un formato personalizzato. Se si applica il formato personalizzato "0x" @ alla cella, il valore della cella può comunque essere utilizzato in un'equazione. Esempi:

╔═══╦════════════════╦════════════╦═══════════════ ══════════════╦═══════════════╗
║ ║ A ║ B ║ ║ ║
╠═══╬════════════════╬════════════╬═══════════════ ══════════════╬═══════════════╣
║ 1 ║ ║ Valore ║ Formula corrispondente ║ Formato numero ║
║ 2 ║ Decimale ║ 11162790 ║ 11162790 ║ Generale ║
║ 3 ║ esadecimale ║ AA54A6 ║ = DEC2HEX (B2) ║ generale ║
║ 4 ║ 0 iniziali ║ 00AA54A6 ║ = DEC2HEX (B2,8) ║ Generale ║
║ 5 ║ Testo 0x prefisso ║ 0x00AA54A6 ║ = DEC2HEX (B2,8) ║ "0x" @ ║
║ 6 ║ Testo 0x prefisso ║ 0x00AA54A6 ║ = "0x" e DEC2HEX (B2,8) ║ Generale ║
║ 7 ║ Usa B5 ║ AA54A600 ║ = DEC2HEX (HEX2DEC (B5) * 256) ║ Generale ║
║ 8 ║ Usa B5 ║ 0xAA54A600 ║ = DEC2HEX (HEX2DEC (B5) * 256) ║ "0x" @ ║
║ 9 ║ Prova a usare B6 ║ #NUM! ║ = DEC2HEX (HEX2DEC (B6) * 256) ║ Generale ║
╚═══╩════════════════╩════════════╩═══════════════ ══════════════╩═══════════════╝


Tuttavia, i numeri grandi con cifre diverse possono ancora essere difficili da leggere, quindi mi piace mettere le virgole in numeri decimali e "_" in numeri esadecimali. Per prima cosa devi ottenere i 16 bit superiori e inferiori del numero. I 16 bit superiori di un numero a 32 bit possono essere recuperati con = INT (A1 / 2 ^ 16). La divisione per 2 ^ 16 agisce come uno spostamento a destra di 16 bit e INT rimuove il resto frazionario. MOD può essere utilizzato per ottenere i 16 bit inferiori di qualsiasi numero a 32 o 64 bit; = MOD (A1, 2 ^ 16). Il MOD recupera effettivamente il resto, ovvero i 16 bit inferiori. Ecco una tabella che mostra questo in azione.

╔═══╦═════════════╦═══════════════╦═══════════════ ═════════════════════╦═════════╗
║ ║ A ║ B ║ ║ ║
╠═══╬═════════════╬═══════════════╬═══════════════ ═════════════════════╬═════════╣
║ 1 ║ ║ Valore ║ Formula corrispondente ║ Formato ║
║ 2 ║ Decimale ║ 3.098.743.209 ║ 3098743209 ║ #, ## 0 ║
║ 3 ║ Byte superiori ║ B8B3 ║ = DEC2HEX (INT (B2 / 2 ^ 16), 4) ║ Generale ║
║ 4 ║ Byte inferiori ║ 11A9 ║ = DEC2HEX (MOD (B2, 2 ^ 16)) ║ Generale ║
║ 5 ║ Numero completo ║ 0xB8B3_11A9 ║ = "0x" e DEC2HEX (INT (B2 / 2 ^ 16), 4) ║ Generale ║
║ ║ ║ ║ & "_" & DEC2HEX (MOD (B2, 2 ^ 16), 4) ║ ║
╚═══╩═════════════╩═══════════════╩═══════════════ ═════════════════════╩═════════╝


A proposito, devo ringraziare molto https://ozh.github.io/ascii-tables/ . Ho usato quel link per creare le tabelle di testo ASCII. Ho appena copiato la tabella dal mio foglio di calcolo Excel nella sua sezione Input e ha creato automaticamente il piacevole layout di testo Unicode.


16

Se desideri formattare una cella in modo da poter digitare un numero decimale e visualizzarlo automaticamente come numero esadecimale, non è possibile. Puoi formattare la cella come testo e inserire direttamente numeri esadecimali (ma nota che Excel non può usarli per i calcoli) oppure usare le funzioni DEC2HEX()e HEX2DEC()per convertire tra base 10 e base 16.


1
Per riferimento, c'è anche quello DEC2BIN()che converte in binario. Per binario a larghezza fissa, utilizzare qualcosa del tipo=TEXT(DEC2BIN(A1), "0000")
Tor Klingberg,

1
In un Excel 2013 localizzato in tedesco, DEC2HEX e HEX2DEC generano il messaggio di errore # NOME ?. Con l'aiuto di Office, ho potuto scoprire che le funzioni sono chiamate DEZINHEX e HEXINDEZ, resp.
Bernhard Hiller,

Come posso estendere = 0x1234AB a = 0x001234AB (ho bisogno di una larghezza fissa di 8)?
Danijel,

@Danijel Utilizzare il secondo parametro di DEC2HEX.
Vincent G,

7

Se viene A1utilizzata la cella da convertire =DEC2HEX(A1).


2
Potresti voler aggiungere uno "0x" iniziale al valore esadecimale. Utilizzare ="0x"&DEC2HEX(A1,4)per ottenere un risultato simile 0x1AF2.
Utente 5910

4

Se è necessario eseguire operazioni matematiche su numeri convertiti in esadecimali, prima convertirli in decimali, eseguire l'operazione, quindi riconvertire in esadecimali.

Ad esempio, se la cella A1ha un numero esadecimale, come sarebbe creato da questa formula:

=DEC2HEX(17)

che verrebbe visualizzato come 11 e la cella A2ha la formula:

=DEC2HEX(165)

che verrebbe visualizzato come A5e desideri aggiungerli insieme, quindi questa formula otterrà il risultato desiderato:

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

che verrebbe visualizzato come B6


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

La formula REPT ripete lo "0" in base alla lunghezza della stringa esadecimale generata convertendola da un decimale e alla lunghezza desiderata della stringa HEX. In questo esempio sto cercando di generare stringhe HEX di lunghezza 4.

Quindi concatenare gli zeri iniziali alla stringa HEX effettiva, generando così il valore HEX della lunghezza desiderata.

vantaggi:

  1. Facilità di gestione della formula in altri fogli di lavoro. Con solo due riferimenti di cella a un valore decimale, B3, da riassegnare.
  2. I risultati di questa formula sono trattati come valori esadecimali da Excel. Potresti anche aggiungere il prefisso "0x", ma non lo trovo necessario.

Nota: lo uso quando sto copiando stringhe HEX e vengono copiate su lunghezze variabili. In primo luogo ho generato una colonna di valori decimali dai valori originali che posso quindi eseguire questa formula contro.


0

Ecco una soluzione che ho trovato per assicurarmi di poter formattare questi numeri esadecimali in formato HTML:

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

2
Una spiegazione di ciò che sta accadendo nel tuo codice renderebbe la risposta più utile.
WilliamKF,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.