HEX a DEC w RFID – jak przeliczyć numer karty i dlaczego wyniki się różnią?
HEX i DEC to dwa różne sposoby zapisu tej samej wartości liczbowej. W systemach RFID identyfikator karty lub breloka może być przedstawiany w systemie szesnastkowym HEX albo dziesiętnym DEC.
Dlatego jedna karta może zostać odczytana przez jedno urządzenie jako:
00A6FDD4
a przez inne jako:
0010943956
i oba wyniki mogą być prawidłowe.
Problem komplikuje się, gdy czytnik dodatkowo zmienia kolejność bajtów, wykorzystuje tylko część UID albo konwertuje dane do formatu stosowanego przez system kontroli dostępu.
W tym poradniku wyjaśniamy, jak rozpoznać te formaty i poprawnie porównywać numery kart RFID.
Co oznacza HEX?
HEX, czyli system szesnastkowy, wykorzystuje 16 znaków:
0 1 2 3 4 5 6 7 8 9 A B C D E F
Litery odpowiadają wartościom:
| HEX | DEC |
|---|---|
| A | 10 |
| B | 11 |
| C | 12 |
| D | 13 |
| E | 14 |
| F | 15 |
Przykładowy numer zapisany w HEX:
00A6FDD4
jest więc liczbą szesnastkową, a nie ciągiem przypadkowych liter i cyfr.
Co oznacza DEC?
DEC oznacza system dziesiętny.
Jest to system, którego używamy na co dzień, wykorzystujący cyfry od 0 do 9.
Przykładowo:
HEX
00A6FDD4
odpowiada:
DEC
10943956
Jeżeli urządzenie wymaga wyniku o długości 10 cyfr, wartość może być przedstawiona jako:
0010943956
Zera z lewej strony nie zmieniają wartości liczbowej.
Czy 00A6FDD4 i 0010943956 to ten sam numer?
Tak.
W tym konkretnym przykładzie:
00A6FDD4 HEX
=
10943956 DEC
=
0010943956 DEC przy zapisie 10-cyfrowym.
To bardzo ważne przy porównywaniu czytników RFID.
Czytnik A może pokazać:
00A6FDD4
a czytnik B:
0010943956
Mimo różnego wyglądu oba urządzenia mogą reprezentować dokładnie tę samą wartość.
Jak przeliczyć HEX na DEC?
Każda pozycja liczby HEX odpowiada kolejnej potędze liczby 16.
Dla przykładu:
A6FDD4
możemy zapisać jako:
A × 16⁵ + 6 × 16⁴ + F × 16³ + D × 16² + D × 16¹ + 4 × 16⁰
gdzie:
A = 10
F = 15
D = 13
Po wykonaniu obliczenia otrzymujemy:
10943956
Nie trzeba jednak wykonywać takich obliczeń ręcznie.
Kalkulator RFID HEX ↔ DEC
Wpisz numer karty lub UID. Kalkulator automatycznie rozpozna format i pokaże najczęściej używane reprezentacje RFID.
Docelowo na e-planeta.pl umieścimy kalkulator RFID HEX ↔ DEC, który zrobi konwersję automatycznie.
Co oznacza 8H?
W konfiguratorach czytników RFID można spotkać oznaczenie:
8H
Najczęściej oznacza ono przedstawienie wartości jako:
8 znaków HEX
Przykład:
BFA5B35D
To osiem znaków:
BF A5 B3 5D
czyli cztery bajty danych.
Jeden bajt może być przedstawiony za pomocą dwóch znaków HEX.
Co oznacza 10D?
10D najczęściej oznacza dziesiętną reprezentację wartości zapisaną w polu o długości do 10 cyfr.
Przykładowo:
HEX:
00A6FDD4
DEC:
10943956
10D:
0010943956
W praktyce sposób implementacji może zależeć od producenta czytnika, dlatego zawsze należy sprawdzić dokumentację konkretnego urządzenia.
Co oznacza 8H10D?
Określenie 8H10D jest często używane w branży RFID do opisania konwersji:
8 znaków HEX → wartość dziesiętna przedstawiona jako 10 cyfr.
Schemat:
00A6FDD4
↓
HEX → DEC
↓
0010943956
Nie oznacza to zmiany danych zapisanych na karcie.
Zmienia się jedynie sposób prezentowania identyfikatora.
Czy HEX może zawierać małe litery?
Tak.
Przykładowo:
BFA5B35D
oraz:
bfa5b35d
reprezentują dokładnie tę samą wartość.
W systemie szesnastkowym:
A–F
i:
a–f
mają takie samo znaczenie.
Różnica może jednak mieć znaczenie dla oprogramowania odbierającego dane, jeśli program porównuje identyfikatory jako tekst i rozróżnia wielkie oraz małe litery.
Dlatego dwa zapisy mogą być matematycznie identyczne, ale nie każde oprogramowanie potraktuje je jako identyczny ciąg znaków.
Dlaczego czytnik pokazuje HEX wielkimi literami?
To zależy od firmware lub konfiguracji urządzenia.
Czytnik może zwracać:
BFA5B35D
albo:
bfa5b35d
Nie oznacza to różnicy w identyfikatorze karty.
Jeżeli system docelowy wymaga małych liter, trzeba sprawdzić, czy:
- czytnik pozwala zmienić format wyjściowy,
- program konfiguracyjny posiada taką opcję,
- dane mogą zostać przekształcone przez oprogramowanie odbierające.
HEX/DEC to nie wszystko – ważna jest kolejność bajtów
To jedna z najczęściej pomijanych kwestii.
Załóżmy, że czytnik zwrócił:
BFA5B35D
Podzielmy wynik na bajty:
BF A5 B3 5D
Po odwróceniu kolejności otrzymujemy:
5D B3 A5 BF
czyli:
5DB3A5BF
Oba ciągi zawierają te same cztery bajty, ale w odwrotnej kolejności.
Co oznacza HEX Reverse?
Jeżeli konfigurator czytnika posiada opcję:
HEX
oraz:
HEX Reverse
różnica może wyglądać tak:
| Format | Wynik |
|---|---|
| HEX | BFA5B35D |
| HEX Reverse | 5DB3A5BF |
Dopiero po ustaleniu kolejności bajtów powinniśmy wykonywać konwersję do DEC.
To bardzo ważne, ponieważ:
HEX → DEC
oraz:
HEX Reverse → DEC
dadzą dwie zupełnie różne liczby dziesiętne.
Dlaczego różne systemy używają reverse?
RFID łączy wiele standardów, urządzeń i systemów informatycznych.
Jedno urządzenie może interpretować kolejność bajtów zgodnie z jednym sposobem reprezentacji danych, a inne urządzenie lub program może oczekiwać kolejności odwrotnej.
Dlatego przy migracji z jednego czytnika na drugi trzeba sprawdzić nie tylko:
HEX czy DEC?
ale również:
w jakiej kolejności interpretowane są bajty?
Czy UID to to samo co DEC?
Nie.
UID jest identyfikatorem związanym z transponderem lub kartą.
HEX i DEC określają natomiast sposób przedstawienia wartości.
W uproszczeniu można to zapisać:
UID
↓
00 A6 FD D4
↓
możliwe reprezentacje:
00A6FDD4 — HEX
10943956 — DEC
0010943956 — 10D
Nie należy więc mówić, że „karta ma UID HEX” i „inną kartę UID DEC”.
Może to być ten sam identyfikator przedstawiony w innym systemie liczbowym.
Czy każdy czytnik wykorzystuje cały UID?
Nie zawsze.
To kolejny powód występowania różnych wyników.
Czytnik może wykorzystywać:
pełny UID
albo:
ostatnie 4 bajty
ostatnie 3 bajty
lub określony fragment identyfikatora.
Dlatego sama konwersja HEX → DEC czasami nie wystarczy.
Przykład – ostatnie 3 bajty
Załóżmy, że mamy:
BF A5 B3 5D
Pełne cztery bajty:
BFA5B35D
Jeżeli urządzenie wykorzystuje tylko ostatnie trzy:
A5B35D
otrzymujemy inną wartość.
Dlatego w konfiguratorach RFID można spotkać określenia w rodzaju:
The card last 3 bytes
To nie jest inny UID karty.
Urządzenie po prostu wykorzystuje fragment dostępnego identyfikatora.
Dlaczego jest to ważne przy wymianie czytnika?
Załóżmy, że firma posiada bazę 10 000 kart.
Stary czytnik przekazywał do systemu:
10D
a nowy:
8H HEX
Po wymianie urządzenia system może przestać rozpoznawać użytkowników, mimo że wszystkie karty są prawidłowe.
Problemem nie są karty.
Problemem jest:
niezgodność formatu danych wyjściowych.
Dlatego przed wymianą czytnika trzeba sprawdzić format starego urządzenia.
HEX/DEC a Wiegand
Wiegand jest kolejnym źródłem nieporozumień.
Przykładowo Wiegand 26 wykorzystuje 26-bitową ramkę.
Typowa struktura obejmuje:
1 bit parzystości + 8 bitów Facility Code + 16 bitów Card Number + 1 bit parzystości.
Dlatego numer widoczny w systemie Wiegand nie musi odpowiadać pełnej dziesiętnej reprezentacji UID.
Możemy mieć więc:
UID karty
↓
HEX
↓
DEC
ale również:
UID / dane urządzenia
↓
format Wiegand
↓
Facility Code + Card Number
To nie są zawsze wartości, które można porównywać znak po znaku.
Jak ustalić format numeru swojej karty?
Najlepiej zebrać kilka informacji.
Krok 1
Odczytaj kartę za pomocą czytnika.
Przykład:
BFA5B35D
Krok 2
Sprawdź, czy wynik zawiera litery A–F.
Jeżeli tak, bardzo prawdopodobne jest, że jest przedstawiony jako HEX.
Krok 3
Przelicz HEX na DEC.
Krok 4
Jeżeli wynik nadal nie odpowiada numerowi w systemie, odwróć kolejność bajtów.
Krok 5
Przelicz wartość reverse na DEC.
Krok 6
Jeżeli nadal nie ma zgodności, sprawdź:
- czy system wykorzystuje cały UID,
- ostatnie 3 lub 4 bajty,
- Wiegand,
- Facility Code,
- Card Number,
- własny algorytm producenta.
Tabela diagnostyczna
| Czytnik/system | Przykład | Co sprawdzić |
|---|---|---|
| 8H | BFA5B35D |
HEX |
| HEX reverse | 5DB3A5BF |
odwrócone bajty |
| 10D | xxxxxxxxxx |
DEC |
| last 3 bytes | A5B35D |
część identyfikatora |
| Wiegand 26 | FC + Card No. | struktura Wiegand |
| nadruk na karcie | xxxxxxxxxx |
sposób kodowania producenta |
------------------------------------------------------------------------
Najczęstszy błąd przy porównywaniu kart RFID
Najczęstszy błąd polega na założeniu:
„Jeżeli numery wyglądają inaczej, czytniki odczytują inne dane.”
Nie zawsze.
Najpierw należy sprawdzić:
system liczbowy → kolejność bajtów → długość danych → wykorzystany fragment UID → format transmisji.
Dopiero później można stwierdzić, czy urządzenia rzeczywiście odczytują różne informacje.
Czy można skonfigurować czytnik na konkretny format?
Zależy od modelu.
Bardziej rozbudowane czytniki mogą pozwalać na wybór np.:
8H
10D
HEX reverse
DEC
lub określonej liczby bajtów.
Proste czytniki USB często mają jeden format zapisany w firmware.
Dlatego przed zakupem urządzenia do istniejącego systemu warto ustalić dokładnie oczekiwany format danych.
Jakiego czytnika potrzebuję do MIFARE?
Karty MIFARE pracują na częstotliwości 13,56 MHz.
Nie wystarczy więc typowy czytnik UNIQUE 125 kHz.
Jeżeli w firmie występują zarówno transpondery 125 kHz, jak i 13,56 MHz, można zastosować czytnik dualny obsługujący obie częstotliwości, pod warunkiem że jego sposób odczytu jest zgodny z wymaganiami systemu.
W tym miejscu na e-planeta.pl wstawimy naturalny link do Dual Pro 20.21, ale dopiero po przebudowaniu jego karty na oficjalną stronę techniczną.
FAQ
Czy HEX i DEC mogą oznaczać ten sam numer?
Tak. Są to dwa sposoby reprezentacji wartości liczbowej. Przykładowo 00A6FDD4 w HEX odpowiada 10943956 w DEC.
Czy wielkie i małe litery w HEX zmieniają wartość?
Nie. BFA5B35D i bfa5b35d mają tę samą wartość liczbową. Wielkość liter może jednak mieć znaczenie dla programu, który porównuje dane jako tekst.
Co oznacza 8H?
Najczęściej oznacza wynik przedstawiony jako osiem znaków HEX.
Co oznacza 10D?
Najczęściej jest to dziesiętna reprezentacja wartości w formacie do 10 cyfr.
Co oznacza reverse?
W kontekście czytników RFID najczęściej oznacza odwrócenie kolejności bajtów.
Czy DEC jest numerem zapisanym w pamięci karty?
Nie musi być. Może być jedynie dziesiętną reprezentacją odczytanego identyfikatora.
Dlaczego numer z czytnika nie odpowiada nadrukowi?
Nadruk może wykorzystywać inny format, kolejność bajtów, tylko część UID albo numer przygotowany dla określonego systemu kontroli dostępu.
Czy można automatycznie przeliczać numery RFID?
Tak. Konwersję HEX/DEC i odwracanie kolejności bajtów można wykonywać programowo. W przypadku Wiegand trzeba dodatkowo znać format ramki.
Podsumowanie
Różne numery wyświetlane dla tej samej karty RFID nie muszą oznaczać różnych identyfikatorów.
Najczęściej przyczyną jest jeden z pięciu elementów:
1. HEX vs DEC
2. normal vs reverse
3. pełny UID vs fragment UID
4. różna długość danych
5. format Wiegand lub format producenta
Dlatego prawidłowa diagnostyka powinna wyglądać:
odczyt → identyfikacja HEX/DEC → kontrola kolejności bajtów → kontrola długości → kontrola UID → Wiegand/system docelowy.