我正在尝试读取一个以空字符结尾的字符串,但是在解压缩字符并将其与字符串放在一起时遇到问题。
这是代码:
def readString(f):
str = ''
while True:
char = readChar(f)
str = str.join(char)
if (hex(ord(char))) == '0x0':
break
return str
def readChar(f):
char = unpack('c',f.read(1))[0]
return char
Run Code Online (Sandbox Code Playgroud)
现在这给了我这个错误:
TypeError: sequence item 0: expected str instance, int found
Run Code Online (Sandbox Code Playgroud)
我也在尝试以下方法:
char = unpack('c',f.read(1)).decode("ascii")
Run Code Online (Sandbox Code Playgroud)
但它抛出我: AttributeError: 'tuple' object has no attribute 'decode'
我什至不知道如何读取字符并将其添加到字符串中,有什么正确的方法可以做到这一点?
我正在使用 C# 中的 System.IO 中的 BinaryReader 读取二进制文件,但是,当使用 ReadString 时,它不会读取第一个字节,代码如下:
using (var b = new BinaryReader(File.Open(open.FileName, FileMode.Open)))
{
int version = b.ReadInt32();
int chunkID = b.ReadInt32();
string objname = b.ReadString();
}
Run Code Online (Sandbox Code Playgroud)
这并不难,首先它读取两个整数,但应该返回 objame 的字符串是“bat”,而它返回的是“at”。
这与我读过的前两个整数有关系吗?或者可能是因为第一个 int 和字符串之间没有空字节?
提前致谢。