Risposte:
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 ║ ╚═══╩════════════════╩════════════╩═══════════════ ══════════════╩═══════════════╝
╔═══╦═════════════╦═══════════════╦═══════════════ ═════════════════════╦═════════╗ ║ ║ 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) ║ ║ ╚═══╩═════════════╩═══════════════╩═══════════════ ═════════════════════╩═════════╝
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.
Se viene A1
utilizzata la cella da convertire =DEC2HEX(A1)
.
="0x"&DEC2HEX(A1,4)
per ottenere un risultato simile 0x1AF2
.
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 A1
ha un numero esadecimale, come sarebbe creato da questa formula:
=DEC2HEX(17)
che verrebbe visualizzato come 11 e la cella A2
ha la formula:
=DEC2HEX(165)
che verrebbe visualizzato come A5
e desideri aggiungerli insieme, quindi questa formula otterrà il risultato desiderato:
=DEC2HEX(HEX2DEC(A1)+HEX2DEC(A2))
che verrebbe visualizzato come B6
=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:
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.
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))
DEC2BIN()
che converte in binario. Per binario a larghezza fissa, utilizzare qualcosa del tipo=TEXT(DEC2BIN(A1), "0000")