Jeśli tylko napisać znaki ASCII do pliku, to będzie możliwe, aby otworzyć go w Notatniku lub innym edytorze tekstowym dobrze:
local out = io.open("file.bin", "wb")
local str = string.char(72,101,108,108,111,10) -- "Hello\n"
out:write(str)
out:close()
Plik wynikowy będzie zawierał:
Hello
z drugiej strony, jeśli piszesz rzeczywiste dane binarne (na przykład losowych bajtów) dostaniesz śmieci:
local out = io.open("file.bin", "wb")
local t = {}
for i=1,1000 do t[i] = math.random(0,255) end
local str = string.char(unpack(t))
out:write(str)
out:close()
Jest to podobne do tych zapisanych plików gier wideo, które widziałeś.
Jeśli nadal nie rozumiem, spróbuj napisać wszystkie możliwe oktety do pliku:
local out = io.open("file.bin", "wb")
local t = {}
for i=0,255 do t[i+1] = i end
local str = string.char(unpack(t))
out:write(str)
out:close()
a następnie otworzyć go w edytorze szesnastkowym (tutaj użyłem Hex Fiend na Mac OS) zobaczyć odpowiedniki:
Tu, po lewej stronie, trzeba bajtów w systemie szesnastkowym i po prawej masz swoją reprezentację tekstową. Wybrałem wielkie litery H, które, jak widać po lewej, odpowiadają 0x48. 0x48 to 4 * 16 + 8 = 72 w podstawie 10 (spójrz na dolny pasek ekranu, który mówi, że).
Spójrzmy teraz na moim pierwszym przykładzie kodu i zgadnijcie co kod dla małymi e jest ...
I wreszcie spojrzeć na 4 ostatnie wiersze screenie (bajty 128 do 255). To są śmieci, które widziałeś.
Plik tekstowy * jest * typ pliku binarnego. – greatwolf
Prawdopodobnie odczytywanie/zapisywanie pliku tekstowego otwartego bez opcji 'b' może zatrzymać się na' '\ x1A'' char. Aby tego uniknąć, wprowadzono opcję "b". –
http://www.cplusplus.com/forum/general/33808/ Drugi post w tym wyjaśnił rzeczy dla mnie. W mojej klasie C++ uczono nas, że pliki binarne są całkowicie oddzielnymi rzeczami, które miały być nieczytelne dla ludzi, więc byłem raczej zdezorientowany, kiedy mogłem odczytać go poprawnie za pomocą notatnika.To powiedziawszy, jeśli otworzysz binarne pliki zapisu większości gier, pojawią się one jako kompletne nierozpoznawalne śmieci, więc nie mogę pomóc, ale czuję, że czegoś brakuje. –