Konwerter HEX na liczby całkowite
Przelicz liczby szesnastkowe (HEX) na dziesiętne (integer), binarne i ósemkowe. Obsługa liczb całkowitych ze znakiem (signed) i bez znaku (unsigned). Bezpłatnie.
-
1Wprowadź dane
Wpisz treść, wklej tekst lub załaduj plik z dysku. -
2Kliknij przycisk
Narzędzie natychmiast przetworzy Twoje dane w przeglądarce. -
3Pobierz wynik
Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
return "Wynik gotowy w 0.1s";
}
Status
błędny HEX lub puste wejście → komunikat pod ustawieniami
Wynik (DEC)
liczba dziesiętna — arytmetyka na stringach, bez utraty precyzji
Cyfry HEX
po usunięciu 0x, # i separatorów
Długość
4 bity na każdą cyfrę HEX
Rozmiar
sufit z długości w bitach
Tryb
ze znakiem = uzupełnienie do dwóch
3735928559
| HEX | DEC | Bity | Co przedstawia |
|---|---|---|---|
| 0x1 | 1 | 4 | najmniejsza cyfra niezerowa |
| 0xF | 15 | 4 | 15 — największa pojedyncza cyfra szesnastkowa |
| 0x10 | 16 | 8 | 16 = 2^4 — jedna cyfra HEX to 4 bity |
| 0xFF | 255 | 8 | 255 = maksymalny bajt |
| 0x100 | 256 | 12 | 256 = 2^8 — jak jedna cyfra dalej |
| 0xFFFF | 65535 | 16 | 65535 = maksymalne 16 bitów (2 bajty) |
| 0xDEADBEEF | 3735928559 | 32 | klasyk debuggerów, z separatorami 0xDE_AD_BE_EF |
| 0xFFFFFFFFFFFFFFFF | 18446744073709551615 | 64 | maksymalne 64 bity (8 bajtów) — precyzja stringów |
Rodzina binarna w jednym rzędzie oka: FF16 = 25510 = 111111112, a FFFF16 = 6553510. Te same wartości obliczą sąsiednie narzędzia „HEX na binarne”, „HEX na liczbę dziesiętną” i „HEX na Octal”.
| HEX | Szerokość | Bez znaku | Ze znakiem (two’s complement) |
|---|---|---|---|
| 0xFF | 8 bit | 255 | -1 |
| 0x7F | 8 bit | 127 | 127 |
| 0x80 | 8 bit | 128 | -128 |
| 0xFFFF | 16 bit | 65535 | -1 |
| 0x8000 | 16 bit | 32768 | -32768 |
Zwróć uwagę na 0x7F i 0x80 — sąsiadujące wartości bez znaku (127, 128) to skrajnie różne liczby ze znakiem (127, −128). Przy „Auto” silnik dobiera szerokość do długości wejścia (minimum 8 bitów, całe bajty).
Warto wiedzieć — HEX w programowaniu
Gdzie spotkasz HEX
Kolory w CSS (#FF8800), adresy pamięci i offsety w debuggerach, bajty plików w hex edytorze, skróty SHA-256, identyfikatory w API i Rejestrze Windows. Jedna cyfra HEX = 4 bity, więc bajt zawsze zapiszesz dokładnie dwiema cyframi.
Dlaczego wynik to tekst
Liczby powyżej 2^53 (16^13) nie mieszczą się w precyzji liczb zmiennoprzecinkowych, a int w PHP ma 64 bity. Silnik liczy więc „na stringach” (×16 + cyfra cyfra po cyfrze) — konwersja jest dokładna także dla 256-bitowych wartości, bez notacji naukowej.
Prefiksy i separatory
Narzędzie rozumie popularne zapisy: 0xFF (C, Python, JS), #FF (kolory), wielkie i małe litery, a przy włączonej opcji separatorów także DE_AD_BE_EF lub DE AD BE EF — separatory grupują bajty tak, jak robią to numery kart czy UUID.
Ze znakiem czy bez
W sprzęcie i protokołach bajt może być „niepodpisany” (0–255) albo „podpisany” uzupełnieniem do dwóch (−128..127). Zły wybór daje wynik przesunięty o 256, 65536 itd. — wtedy przełącz checkbox „Signed” i porównaj z drugą tabelą ściągi.
Oceń to narzędzie:
Powiązane narzędzia
Inne narzędzia, które mogą Ci się przydaćKonwerter HEX ↔ integer – signed, unsigned, little i big endian
Programiści regularnie konwertują między hex a integer: debugowanie rejestrów CPU, analiza plików binarnych, kolory CSS, adresy pamięci. Narzędzie przelicza w obie strony z obsługą różnych rozmiarów (8, 16, 32, 64 bit) i kolejności bajtów.
Konwersja HEX → integer
Hex digit → 4 bity. Dwie cyfry hex = 1 bajt. Przykłady: 0xFF = 255 (8-bit unsigned). 0xFFFF = 65535 (16-bit unsigned). 0xDEADBEEF = 3735928559 (32-bit unsigned). Metoda: suma cyfr × 16^pozycja. D(13)×16³ + E(14)×16² + A(10)×16¹ + D(13)×16⁰.
Signed vs unsigned integers
Unsigned (bez znaku): 0 do 2^n-1. Np. uint8: 0-255. Signed (ze znakiem, two's complement): -(2^(n-1)) do 2^(n-1)-1. int8: -128 do 127. Najwyższy bit = bit znaku. 0xFF jako uint8 = 255. 0xFF jako int8 = -1. 0x80 jako uint8 = 128. 0x80 jako int8 = -128.
Endianness – kolejność bajtów
Little-endian (x86/ARM): najmniej znaczący bajt pierwszy. Liczba 0x12345678 w pamięci: 78 56 34 12. Big-endian (sieć, Java): najbardziej znaczący bajt pierwszy: 12 34 56 78. Sieciowy standard (network byte order): big-endian. ntohl() i htonl() konwertują między nimi w C.
Zastosowania w programowaniu
Debugowanie: rejestr RAX = 0x000000000000007B → wartość 123. Kolory: #FF5733 = (255, 87, 51) w RGB. Adresy pamięci: 0x7FFF5FBFF808. Protokoły: parsowanie nagłówka TCP (source port = 2 bajty big-endian). Flagi bitowe: 0x0F = bity 0-3 ustawione. Kody błędów: HRESULT 0x80004005 (COM error).
Jak działa konwersja w obie strony
Narzędzie sprowadza oba kierunki do jednego mechanizmu: cyfra szesnastkowa odpowiada dokładnie 4 bitom, a więc cała konwersja polega na składaniu półbajtów w jedną liczbę. Na wejściu ciąg jest normalizowany — usuwane są spacje, podkreślenia, myślniki oraz prefiks 0x, a wielkość liter nie ma znaczenia, bo A i a oznaczają tę samą cyfrę. Każdy znak zamieniany jest na wartość od 0 do 15. Wynik budowany jest metodą Hornera: zaczynamy od zera i dla każdej kolejnej cyfry liczymy wynik = wynik × 16 + wartość cyfry. Nie trzeba więc liczyć potęg — wystarczy jedno mnożenie i jedno dodanie na cyfrę, a wynik pozostaje dokładny niezależnie od długości wejścia.
Kierunek odwrotny, czyli liczba całkowita na hex, opiera się na dzieleniu z resztą. Dzielimy wartość przez 16, resztę z zakresu 0-15 zapisujemy jako jedną cyfrę hex, a otrzymany iloraz dzielimy dalej, aż osiągnie zero. Reszty czytane od ostatniej do pierwszej tworzą zapis szesnastkowy, a wartości 10-15 oznaczamy literami A, B, C, D, E, F. Ten sam algorytm stosuje się do liczb ujemnych — najpierw trzeba tylko wyznaczyć ich postać w uzupełnieniu do dwóch w wybranej szerokości.
Trzeci etap to nałożenie szerokości i interpretacji. Wartość jest ograniczana do 8, 16, 32 albo 64 bitów, a w trybie signed najstarszy bit w tej szerokości pełni rolę bitu znaku, co odpowiada zapisowi w uzupełnieniu do dwóch. Zamiana kolejności bajtów jest operacją niezależną: przestawia bajty w zapisie, ale nie zmienia samej wartości liczbowej. Ten sam ciąg cyfr może więc dać kilka różnych wyników i nie jest to błąd — szerokość, tryb znaku i kolejność bajtów to trzy osobne ustawienia, które trzeba dopasować do źródła danych.
Przykład krok po kroku: liczba 4660 na zapis hex
- Przeliczamy liczbę dziesiętną 4660 na zapis szesnastkowy, przy szerokości 16 bitów i kolejności big-endian.
- Dzielimy 4660 przez 16: 4660 / 16 = 291, reszta 4. Reszta 4 jest najmłodszą cyfrą hex.
- Dzielimy iloraz 291 przez 16: 291 / 16 = 18, reszta 3.
- Dzielimy 18 przez 16: 18 / 16 = 1, reszta 2.
- Dzielimy 1 przez 16: 1 / 16 = 0, reszta 1. Iloraz wynosi zero, więc kończymy.
- Reszty czytane od końca dają 0x1234. Sprawdzenie: 1 × 4096 + 2 × 256 + 3 × 16 + 4 = 4096 + 512 + 48 + 4 = 4660. W 16 bitach zapis big-endian to 12 34, a little-endian 34 12.
Potęgi 16 przydatne przy ręcznym liczeniu
| Pozycja cyfry od prawej | Potęga | Wartość dziesiętna |
|---|---|---|
| 0 | 16^0 | 1 |
| 1 | 16^1 | 16 |
| 2 | 16^2 | 256 |
| 3 | 16^3 | 4096 |
| 4 | 16^4 | 65536 |
| 5 | 16^5 | 1048576 |
| 6 | 16^6 | 16777216 |
| 7 | 16^7 | 268435456 |
Praktyczne wskazówki przy konwersji
- Ujednolić zapis wejściowy — usuń spacje, podkreślenia i przecinki grupujące, zanim wkleisz ciąg; prefiks 0x możesz zostawić albo pominąć, ale trzymaj jeden styl w całym pliku.
- Ustaw szerokość przed interpretacją — 8, 16, 32 lub 64 bity decydują o tym, gdzie kończy się liczba i który bit jest najstarszy, więc wynik bez tej decyzji nie ma jednoznacznej wartości.
- Dopełniaj zera do pełnych bajtów — zapis 0x7B przy 32 bitach czytelniej przedstawić jako 0x0000007B, zwłaszcza gdy porównujesz go z danymi z rejestru lub pliku binarnego.
- Kontroluj długość ciągu — 2 cyfry to 1 bajt, 4 cyfry to 2 bajty, 8 cyfr to 4 bajty, a 16 cyfr to 8 bajtów; nietypowa liczba cyfr prawie zawsze oznacza brakującą lub nadmiarową pozycję.
- Przełącz tryb znaku, zamiast szukać błędu — gdy wynik wygląda nieintuicyjnie, porównaj wersję signed i unsigned, a dopiero potem sprawdzaj dane wejściowe.
Czego narzędzie nie uwzględnia
- Nie zna typu źródłowego — z samego ciągu hex nie wynika, czy pochodzi on z rejestru, pliku binarnego czy pola protokołu, więc szerokość i kolejność bajtów musisz wskazać ręcznie.
- Tylko uzupełnienie do dwóch — narzędzie interpretuje liczby ze znakiem w reprezentacji two's complement; historyczne zapisy, takie jak moduł ze znakiem czy uzupełnienie do jedynki, dadzą inny wynik.
- Brak autodetekcji kolejności bajtów — konwerter nie rozpozna, jak bajty leżą w pliku; przy złym ustawieniu wynik będzie poprawny matematycznie, ale nieodpowiadający danym.
- Granica precyzji przy 64 bitach — zakres 64-bitowy wykracza poza bezpieczny zakres liczb całkowitych w JavaScript (2^53), więc najstarsze cyfry mogą zostać zaokrąglone.
Najczęstsze pytania
Jak szybko przeliczać HEX na decimal w głowie?
Tabela cyfr hex: A=10, B=11, C=12, D=13, E=14, F=15. Dla 2-cyfrowego hex: WYŻSZY×16 + NIŻSZY. Przykład: 0xAB = 10×16+11 = 171. 0xFF = 15×16+15 = 255. Dla 4-cyfrowego: WYŻSZY×256 + NIŻSZY (jak 2-cyfrowy hex).
Co znaczy 0x w hexadecymalnym?
Prefiks 0x: konwencja C (K&R C, 1972) oznaczająca liczbę szesnastkową. 0xFF = hex FF = decimal 255. Inne formaty: &FF (Pascal), FFh (assembler), #FF (CSS). Python: 0xFF lub hex(255) = "0xff". JavaScript: parseInt("FF",16) lub 0xFF. Prefix 0b = binarne (0b11111111 = 0xFF = 255).
Jak hex reprezentuje kolory RGB?
#RRGGBB: każda para = 1 składowa (0-255). #FF0000 = rgb(255,0,0) = czerwony. #00FF00 = zielony. #0000FF = niebieski. #FFFFFF = biały (255,255,255). #000000 = czarny. Alpha: #RRGGBBAA – #FF000080 = czerwony 50% opacity. JavaScript: "#FF5733" → R=parseInt("FF",16)=255.
Co to są flagi bitowe (bit flags) i jak je czytać?
Flagi bitowe: każdy bit = osobna flaga bool. 0x05 = 0b00000101 → bity 0 i 2 ustawione. Sprawdzenie bitu n: (value >> n) & 1. Ustawienie bitu: value |= (1 << n). Czyszczenie bitu: value &= ~(1 << n). Przykład Linux file permissions: 755 (octal) = rwxr-xr-x.
Jakie są typowe wartości hex w systemach?
0x00 = null/zero. 0xFF = max 8-bit (255). 0xDEADBEEF = debug/uninitialized memory marker (VC++). 0xCAFEBABE = Java class file magic. 0x7F800000 = IEEE 754 +infinity. 0x80000000 = min signed 32-bit (-2147483648). 0xFFFFFFFF = max unsigned 32-bit = -1 signed.
Jak zamienić liczbę dziesiętną na szesnastkową bez kalkulatora?
Dziel liczbę przez 16 i zapisuj reszty, dopóki iloraz nie spadnie do zera. Reszty czytane od końca dają zapis hex. Dla 4660 kolejne reszty to 4, 3, 2, 1, czyli wynik 0x1234.
Ile cyfr hex potrzebuję na liczbę 64-bitową?
Dokładnie 16 cyfr, bo każda cyfra to 4 bity, a 16 × 4 = 64. Dla porównania 32 bity zajmują 8 cyfr, a 16 bitów 4 cyfry.
Czy można wpisać hex bez prefiksu 0x?
Tak, prefiks jest tylko konwencją zapisu w kodzie i nie zmienia wartości. Narzędzie przyjmuje ciąg z prefiksem lub bez, ważna jest natomiast długość ciągu, bo ona podpowiada szerokość.
Jak zapisać liczbę ujemną w hex?
W trybie signed liczba ujemna jest zapisywana w uzupełnieniu do dwóch w wybranej szerokości. Przykładowo -2 w 16 bitach to 0xFFFE, ponieważ 65536 - 2 = 65534.
Dlaczego przy 64 bitach wynik bywa niedokładny?
Zakres 64 bitów przekracza bezpieczny zakres liczb całkowitych w JavaScript, który kończy się na 2^53. Najstarsze cyfry mogą wtedy zostać zaokrąglone, dlatego wartości graniczne warto potwierdzić w środowisku docelowym.
Powiązane narzędzia: konwerter Base2-Base36, konwerter HEX na tekst i kalkulator operacji bitowych.