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.

Format wejściowy:

Wyniki konwersji

Typ danychABCD (Big Endian)DCBA (Little Endian)BADCCDAB
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
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