Ho diversi valori esadecimali che cerco di scrivere su un file. Sembra che Lua non lo supporti immediatamente, poiché sono tutti trattati come stringhe anziché come valori. Ho calcolato che avrei dovuto suddividere un valore esadecimale più lungo, ad esempio AABBCC in AA, BB, CC e utilizzare string.char() su tutti i loro valori decimali consecutivi per portare a termine il lavoro.Lua: scrittura di valori esadecimali come file binario
Esiste una funzione integrata che consente di scrivere direttamente tali valori senza prima convertirli? Ho usato caratteri di escape come "0xAA" e "\ xAA", ma quelli non funzionavano.
Modifica: Lasciatemi fare un esempio. Sto guardando un file di prova in un editor esadecimale:
00000000 00 00 00 00 00 00 ......
E voglio scrivere su di esso nel modo seguente con il "AABBCC" stringa:
00000000 AA BB CC 00 00 00 ......
quello che ottengo anche se con i caratteri di escape è:
00000000 41 41 42 42 43 43 AABBCC
Perfetto! Proprio quello che stavo cercando. Molte grazie! – Zerobinary99
Questa soluzione sembra aggiungere il valore esadecimale 0c0D (o 13) ad alcuni posti apparentemente casuali. Era così vicino a ciò di cui avevo bisogno. –
Beh, stai scrivendo questo su Windows? Se sì, allora il problema è nelle [interruzioni di riga] (http://en.wikipedia.org/wiki/Line_break_ (calcolo)). Mentre su Unix/Linux/Mac OS X il newline è rappresentato da single '\ n' = 0x0A, su Windows quando si digita una nuova riga, incorpora due byte: 0x0D, 0x0A (13 10, CR + LF).Questo potrebbe essere il motivo per cui stai vedendo 0x0D in posti casuali. Prova a vedere se è vicino a 0x0A - se questo è il caso, usa gli strumenti di conversione per convertire in stile Unix (singolo '\ n'). –