Odpowiedzi:
Jak wspomniano wcześniej, formuła = DEC2HEX (A1) konwertuje na hex, a DEC2HEX (A1,8) konwertuje na hex z prefiksem 0, co oznacza 32 bity. Dodanie początkowych zer powoduje, że liczby są bardziej czytelne, szczególnie jeśli używasz czcionki o stałym punkcie, wersje szesnastkowe i dziesiętne mogą się pomieszać, gdy wszystkie cyfry w liczbie będą miały wartość 0–9 (np. 327701 = 50015).
Ulepszenie polega na dodaniu przedrostka „0x”. Można to zrobić na 2 sposoby. = "0x" i DEC2HEX (A1,8) załatwi sprawę, ale zmieni pole na pole tekstowe, więc nie będzie już można go łatwo używać w formułach. Inną metodą jest użycie niestandardowego formatu. Jeśli zastosujesz niestandardowy format „0x” @ do komórki, wówczas wartość komórki będzie nadal mogła być używana w równaniu. Przykłady:
╔═══╦════════════════╦════════════╦═══════════════ ══════════════╦═══════════════╗ ║ ║ A ║ B ║ ║ ║ ╠═══╬════════════════╬════════════╬═══════════════ ══════════════╬═══════════════╣ ║ 1 ║ ║ Wartość ║ Odpowiednia formuła Format Format liczb ║ ║ 2 ║ Dziesiętny ║ 11162790 ║ 11162790 ║ Ogólne ║ ║ 3 ║ Hex ║ AA54A6 ║ = DEC2HEX (B2) ║ Ogólne ║ ║ 4 ║ wiodące zera ║ 00AA54A6 ║ = DEC2HEX (B2,8) ║ Ogólne ║ ║ 5 ║ Prefiks tekstowy 0x ║ 0x00AA54A6 ║ = DEC2HEX (B2,8) ║ „0x” @ ║ ║ 6 ║ Prefiks tekstowy 0x ║ 0x00AA54A6 ║ = „0x” i DEC2HEX (B2,8) ║ Ogólne ║ ║ 7 ║ Użyj B5 ║ AA54A600 ║ = DEC2HEX (HEX2DEC (B5) * 256) ║ Ogólne ║ ║ 8 ║ Użyj B5 ║ 0xAA54A600 ║ = DEC2HEX (HEX2DEC (B5) * 256) ║ „0x” @ ║ ║ 9 ║ Spróbuj użyć B6 ║ #NUM! ║ = DEC2HEX (HEX2DEC (B6) * 256) ║ Ogólne ║ ╚═══╩════════════════╩════════════╩═══════════════ ══════════════╩═══════════════╝
╔═══╦═════════════╦═══════════════╦═══════════════ ═════════════════════╦═════════╗ ║ ║ A ║ B ║ ║ ║ ╠═══╬═════════════╬═══════════════╬═══════════════ ═════════════════════╬═════════╣ ║ 1 ║ ║ Wartość ║ Odpowiednia formuła ║ Format ║ ║ 2 ║ dziesiętny ║ 3 098,743,209 ║ 3098743209 ║ #, ## 0 ║ ║ 3 ║ Górne bajty ║ B8B3 ║ = DEC2HEX (INT (B2 / 2 ^ 16), 4) ║ Ogólne ║ ║ 4 ║ Niższe bajty ║ 11A9 ║ = DEC2HEX (MOD (B2, 2 ^ 16)) ║ Ogólne ║ ║ 5 ║ Pełny numer ║ 0xB8B3_11A9 ║ = „0x” i DEC2HEX (INT (B2 / 2 ^ 16), 4) ║ Ogólne ║ ║ ║ ║ ║ & "_" i DEC2HEX (MOD (B2, 2 ^ 16), 4) ║ ║ ╚═══╩═════════════╩═══════════════╩═══════════════ ═════════════════════╩═════════╝
Jeśli chcesz sformatować komórkę, aby móc wpisać liczbę dziesiętną i automatycznie wyświetlać ją jako liczbę szesnastkową, nie jest to możliwe. Możesz albo sformatować komórkę jako tekst i wprowadzić liczby szesnastkowe bezpośrednio (ale pamiętaj, że Excel nie może używać ich do obliczeń), lub użyj funkcji DEC2HEX()
i HEX2DEC()
do konwersji między bazą 10 a bazą 16.
Jeśli chcesz wykonać operacje matematyczne na liczbach przekonwertowanych na szesnastkowe, najpierw przekonwertuj je na dziesiętne, wykonaj operację, a następnie przekonwertuj z powrotem na szesnastkowy.
Na przykład, jeśli komórka A1
ma numer szesnastkowy, taki jak utworzony z tej formuły:
=DEC2HEX(17)
który byłby wyświetlany jako 11, a komórka A2
ma formułę:
=DEC2HEX(165)
który byłby wyświetlany jako A5
i chcesz je dodać razem, wówczas ta formuła uzyska pożądany wynik:
=DEC2HEX(HEX2DEC(A1)+HEX2DEC(A2))
który byłby wyświetlany jako B6
=REPT("0",4-LEN(DEC2HEX(B3)))&DEC2HEX(B3)
Formuła REPT powtarza „0” na podstawie długości ciągu szesnastkowego, który jest generowany przez konwersję go z dziesiętnej, i pożądanej długości ciągu HEX. W tym przykładzie chcę wygenerować ciągi HEX o długości 4.
Następnie konkatenuje się zera wiodące z rzeczywistym łańcuchem HEX, generując w ten sposób wartość HEX o pożądanej długości.
Zalety:
Uwaga: używam tego, gdy kopiuję ciągi HEX i są one kopiowane w różnych długościach. Najpierw generuję kolumnę wartości dziesiętnych na podstawie oryginalnych wartości, na których mogę następnie uruchomić tę formułę.
Oto rozwiązanie, które zapewniłem, że mogę sformatować te liczby szesnastkowe w formacie HTML:
SWITCH(LEN(DEC2HEX(B6)),1,"000"&DEC2HEX(B6),2,"00"&DEC2HEX(B6),3,"0"&DEC2HEX(B6),4,DEC2HEX(B6))
DEC2BIN()
co konwertuje na binarne. Aby uzyskać plik binarny o stałej szerokości, użyj czegoś takiego=TEXT(DEC2BIN(A1), "0000")