Konwerter typów danych | Konwersja liczb zmiennoprzecinkowych IEEE754/szesnastkowych/dziesiętnych/obsługa wielu kolejności bajtów (Big Endian/Little Endian/Big Endian-Byte Swap/Little Endian-Byte Swap)/konwersja w czasie rzeczywistym
Profesjonalne narzędzie do konwersji typów danych, obsługujące konwersję między liczbami zmiennoprzecinkowymi IEEE754 a formatem szesnastkowym/dziesiętnym, obejmujące wszystkie typy danych całkowitych i zmiennoprzecinkowych (UINT16/INT16/UINT32/INT32/FLOAT32/UINT64/INT64/FLOAT64), z obsługą wielu kolejności bajtów (Big Endian (najbardziej znaczący bajt na początku)/Little Endian (najmniej znaczący bajt na początku)/Big Endian-Byte Swap (najbardziej znaczący bajt na początku)/Little Endian-Byte Swap (najmniej znaczący bajt na początku)), z wyświetlaniem wyników konwersji w czasie rzeczywistym.
Wyniki konwersji
| Typ danych | ABCD (Big Endian) | DCBA (Little Endian) | BADC | CDAB |
|---|---|---|---|---|
UINT16 16-bitowa liczba całkowita bez znaku | - | - | ||
INT16 16-bitowa liczba całkowita ze znakiem | - | - | ||
UINT32 32-bitowa liczba całkowita bez znaku | - | - | - | - |
INT32 32-bitowa liczba całkowita ze znakiem | - | - | - | - |
FLOAT32 32-bitowa liczba zmiennoprzecinkowa | - | - | - | - |
UINT64 64-bitowa liczba całkowita bez znaku | - | - | - | - |
INT64 64-bitowa liczba całkowita ze znakiem | - | - | - | - |
FLOAT64 64-bitowa liczba zmiennoprzecinkowa | - | - | - | - |
Instrukcja użytkowania
Przegląd funkcji
Narzędzie do konwersji typów danych jest przeznaczone do konwersji między różnymi formatami danych. Obsługuje konwersję między formatem szesnastkowym a dziesiętnym, obejmując różne typy danych całkowitych i zmiennoprzecinkowych od 16 do 64 bitów. Liczby całkowite są reprezentowane w kodzie uzupełnień do dwóch (Two's Complement), a liczby zmiennoprzecinkowe w standardzie IEEE-754 (pojedyncza precyzja 32-bitowa/podwójna precyzja 64-bitowa), co pozwala na intuicyjne obserwowanie wpływu kolejności bajtów na wynik.
Główne funkcje:
- Konwersja formatów: Obsługa konwersji między formatem szesnastkowym a dziesiętnym.
- Wiele typów danych: Obsługa 8 popularnych typów danych (UINT16/INT16/UINT32/INT32/FLOAT32/UINT64/INT64/FLOAT64).
- Obsługa kolejności bajtów: Obsługa 4 rodzajów kolejności bajtów (ABCD/DCBA/BADC/CDAB) w celu dostosowania do wymagań różnych urządzeń i kolejności słów w rejestrach.
- Konwersja w czasie rzeczywistym: Wyniki konwersji dla wszystkich typów są wyświetlane natychmiast po wprowadzeniu danych.
Jak używać
- 1. Wybierz format wejściowy: dziesiętny lub szesnastkowy.
- 2. Wprowadź wartość w polu wejściowym.
- 3. Sprawdź wyniki konwersji w tabeli poniżej.
- 4. Wyniki konwersji przekraczające zakres będą wyświetlane jako '-'.
Opis formatu wejściowego
- Wejście dziesiętne: Wprowadź liczby bezpośrednio, np. 123, -456, 3.14.
- Wejście szesnastkowe: Wprowadź znaki szesnastkowe, np. 7B, FF00, A1B2C3D4.
- Automatyczne formatowanie szesnastkowe: Wprowadzane dane są automatycznie uzupełniane do parzystej liczby cyfr i rozdzielane spacjami.
Opis typów danych
Typy całkowite:UINT16/INT16 zajmują 2 bajty, UINT32/INT32 4 bajty, a UINT64/INT64 8 bajtów. Liczby całkowite ze znakiem używają kodu uzupełnień do dwóch (Two's Complement), gdzie najwyższy bit jest bitem znaku. Liczby ujemne są uzyskiwane przez uzupełnienie wartości bezwzględnej (inwersja bitowa + 1). Podczas wyświetlania stosuje się rozszerzenie znaku do docelowej szerokości bitowej.
Typy zmiennoprzecinkowe:FLOAT32 to 4-bajtowa liczba pojedynczej precyzji (1 bit znaku + 8 bitów wykładnika + 23 bity mantysy, offset wykładnika 127). FLOAT64 to 8-bajtowa liczba podwójnej precyzji (1 bit znaku + 11 bitów wykładnika + 52 bity mantysy, offset wykładnika 1023), obie zgodne ze standardem IEEE-754. Obsługiwane są wartości specjalne, takie jak ±0, ±∞ i NaN (Not-a-Number). Liczby zdenormalizowane (Subnormal) są reprezentowane z bardzo małym wykładnikiem.
Ograniczenia zakresu: Wartości przekraczające zakres danego typu danych będą wyświetlane jako '-'.
Opis kolejności bajtów
- ABCD: Big Endian, najbardziej znaczący bajt na początku (np. w niektórych sterownikach PLC/urządzeniach przemysłowych).
- DCBA: Little Endian, najmniej znaczący bajt na początku (np. w większości architektur x86).
- BADC: Zamiana bajtów (zamiana 16-bitowych kroków AB↔BA, CD↔DC), często spotykana przy zamianie dwóch bajtów w danych 32-bitowych.
- CDAB: Zamiana bajtów (w grupach 32-bitowych, zamiana przednich i tylnych dwóch bajtów), kompatybilna z niektórymi kolejnościami słów w rejestrach Modbus.
Uwaga: Kolejność bajtów (Byte Endianness) i kolejność słów w rejestrach (Word Order) to różne pojęcia. Dla danych 16-bitowych znaczenie mają tylko dwie kolejności: ABCD i DCBA. W przypadku danych 64-bitowych zaleca się odniesienie do schematu ośmiu bajtów ABCDEFGH, aby uniknąć nieporozumień.
Wiedza o konwersji danych
Czym jest konwersja typów danych?
Konwersja typów danych to proces przekształcania tej samej wartości liczbowej między różnymi formatami reprezentacji, w tym między różnymi systemami liczbowymi (dziesiętny/szesnastkowy) oraz różnymi typami danych (całkowite/zmiennoprzecinkowe). Jest to powszechne w scenariuszach Modbus/PLC/wbudowanych przy analizie wartości rejestrów i tworzeniu ramek.
Format zmiennoprzecinkowy IEEE-754 (pojedyncza/podwójna precyzja)
Pojedyncza precyzja (32-bity) = 1 bit znaku + 8 bitów wykładnika (offset 127) + 23 bity mantysy. Podwójna precyzja (64-bity) = 1 bit znaku + 11 bitów wykładnika (offset 1023) + 52 bity mantysy. Obsługuje ±0, ±∞, NaN. Gdy wykładnik jest równy zero, a mantysa niezerowa, jest to liczba zdenormalizowana (Subnormal), używana do reprezentowania bardzo małych liczb bliskich zeru.
Kod uzupełnień do dwóch (Two's Complement) i liczby całkowite ze znakiem
Kod uzupełnień do dwóch uzyskuje się poprzez bitową inwersję wartości bezwzględnej i dodanie jedynki, a najwyższy bit jest bitem znaku. Podczas analizy wartości HEX jako typ INT, konieczne jest rozszerzenie znaku zgodnie z szerokością bitową. Gdy najwyższy bit to 1, oznacza to liczbę ujemną, którą należy odtworzyć zgodnie z zasadami kodu uzupełnień do dwóch.
Kolejność bajtów (Endianness) i kolejność słów w rejestrach (Word Order)
Kolejność bajtów kontroluje ułożenie bajtów w pamięci (ABCD/DCBA), podczas gdy kolejność słów w rejestrach kontroluje kolejność wyższych i niższych słów 16-bitowych (np. BADC/CDAB). Oba te czynniki często wpływają na wyświetlanie i analizę danych 32/64-bitowych i powinny być zgodne z dokumentacją urządzenia.
64-bitowe liczby całkowite i bezpieczne liczby całkowite w JavaScript
Typ Number w przeglądarce jest zgodny ze standardem IEEE-754 podwójnej precyzji, z bezpiecznym zakresem liczb całkowitych ±(2^53-1). Nasze narzędzie używa BigInt do konwersji i wyświetlania w scenariuszach 64-bitowych. Gdy wartość przekracza docelowy zakres typu lub istnieje ryzyko utraty precyzji, wyświetlany jest znak '-'.
Normalizacja wejścia HEX
Wejście HEX automatycznie usuwa znaki inne niż szesnastkowe, ujednolica je do wielkich liter i w razie potrzeby dodaje wiodące zero, aby zapewnić parzystą liczbę cyfr. Podczas wyświetlania jest grupowane co dwa znaki ze spacją dla lepszej czytelności.
Zasady dotyczące liczb zmiennoprzecinkowych i typów całkowitych
Gdy wejście dziesiętne zawiera kropkę dziesiętną, a docelowy typ to liczba całkowita, wyświetlany jest znak '-'. Konwersja zmiennoprzecinkowa jest przeprowadzana tylko wtedy, gdy docelowym typem jest FLOAT32/FLOAT64.
Częste nieporozumienia: Big/Little Endian i kolejność bitów, wyświetlanie NaN/Infinity
Big/Little Endian wpływa tylko na kolejność bajtów, kolejność bitów w bajcie pozostaje niezmieniona. NaN ma wiele form kodowania, ale jest wyświetlany jako NaN. ±0 są rozróżniane w standardzie IEEE-754, ale w porównaniach liczbowych są zazwyczaj równoważne.
Scenariusze zastosowań
- Konwersja formatów danych w komunikacji Modbus
- Debugowanie typów danych PLC
- Konfiguracja parametrów urządzeń przemysłowych
- Analiza protokołów komunikacyjnych
- Rozwój systemów akwizycji danych
- Obliczanie wartości rejestrów urządzeń
- Konwersja liczb zmiennoprzecinkowych i całkowitych
- Adaptacja formatów danych między różnymi urządzeniami