您可以逐字节读取二进制文件f:read(size)
,其中大小表示字节数,但我如何逐位读取它?(如果需要,1/8 字节或八位字节)
大多数数据 Int8(1),Uint16(2),Uint32(4),Int*(4) 都可以,但对于 BOOL(0.125 ?)。
谢谢你的帮助 !
编辑:我的问题显然不是一点一点地读取文件,而是设法提取所有数据,包括一些布尔值(不创建 1 位的“移位”)。
您可以逐字节读取二进制文件f:read(size)
,其中大小表示字节数,但我如何逐位读取它?(如果需要,1/8 字节或八位字节)
大多数数据 Int8(1),Uint16(2),Uint32(4),Int*(4) 都可以,但对于 BOOL(0.125 ?)。
谢谢你的帮助 !
编辑:我的问题显然不是一点一点地读取文件,而是设法提取所有数据,包括一些布尔值(不创建 1 位的“移位”)。
你不能。字节是可以从文件中读取的最小单位。您可以编写包装按字节访问的代码以使其看起来按位。
从文件中读取布尔值的适当方式取决于它是如何写入的。除非您遇到完全相同的麻烦来一点一点地写入布尔值,否则没有必要以这种方式读取它们。
Lua 文件 API 只处理数字和字符串。要写入布尔值,您需要将其转换为其中一种类型。要阅读它,您将阅读其中一种类型并执行您用于写入的转换的逆操作。例如,您可以转换true
为1
和false
,0
然后写入和读取数字。或者您可能会尝试将多个布尔值打包到一个数字中。在任何情况下,您都不需要逐位读取或写入文件来读取和写入布尔数据。