Mam kilka wartości szesnastkowych, które próbuję zapisać do pliku. Wygląda na to, że Lua nie obsługuje tego po wyjęciu z pudełka, ponieważ wszystkie są traktowane jako łańcuchy zamiast wartości. Pomyślałem, że będę musiał podzielić dłuższą wartość szesnastkową, na przykład AABBCC na AA, BB, CC i użyć string.char() na wszystkich ich wartościach dziesiętnych kolejno, aby wykonać zadanie.Lua: zapisywanie wartości heksadecymalnych jako pliku binarnego
Czy jest wbudowana funkcja, która pozwala mi zapisywać takie wartości bezpośrednio, bez ich wcześniejszej konwersji? Użyłem znaków ucieczki, takich jak "0xAA" i "\ xAA", ale te nie wyszło.
Edytuj: Pozwól, że dam ci przykład. Patrzę na pliku testowego w edytorze hex:
00000000 00 00 00 00 00 00 ......
I chcę napisać do niego w następujący sposób z ciągiem „AaBbCc”:
00000000 AA BB CC 00 00 00 ......
Co mogę chociaż z znaki ewakuacyjne jest:
00000000 41 41 42 42 43 43 AABBCC
Idealnie! Właśnie tego szukałem. Wielkie dzięki! – Zerobinary99
To rozwiązanie wydaje się dodawać wartość szesnastkową 0c0D (lub 13) do niektórych, pozornie przypadkowych miejsc. Było tak blisko tego, czego potrzebowałem. –
Cóż, piszesz to w systemie Windows? Jeśli tak, to problem występuje w [line breaks] (http://en.wikipedia.org/wiki/Line_break_ (computing)). W systemie Unix/Linux/Mac OS X znak nowej linii jest reprezentowany przez pojedynczy '\ n' = 0x0A, w systemie Windows po wpisaniu nowej linii osadza dwa bajty - 0x0D, 0x0A (13 10, CR + LF).Być może dlatego widzisz 0x0D w przypadkowych miejscach. Spróbuj sprawdzić, czy jest blisko 0x0A - w takim przypadku użyj narzędzi do konwersji, aby przekonwertować na styl uniksowy (pojedynczy "\ n"). –