我正在从二进制文件中读取字符串.每个字符串都以空值终止.编码是UTF-8.在python中,我只读取一个字节,检查它是否为0,将其附加到字节数组,然后继续读取字节,直到看到0.然后我将字节数组转换为字符串并继续.所有字符串都被正确读取.
我怎样才能在C#中读到这个?我不认为我只是简单地将字节附加到数组,因为数组是固定大小的.
以下应该可以满足您的需求.所有文本都应该在myText列表中.
var data = File.ReadAllBytes("myfile.bin");
List<string> myText = new List<string>();
int lastOffset = 0;
for (int i = 0; i < data.Length; i++)
{
if (data[i] == 0)
{
myText.Add(System.Text.Encoding.UTF8.GetString(data, lastOffset, i - lastOffset));
lastOffset = i + 1;
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用List<byte>:
List<byte> list = new List<byte>();
while(reading){ //or whatever your condition is
list.add(readByte);
}
string output = Encoding.UTF8.GetString(list.ToArray());
Run Code Online (Sandbox Code Playgroud)
或者你可以使用StringBuilder:
StringBuilder builder = new StringBuilder();
while(reading){
builder.Append(readByte);
}
string output = builder.ToString();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8831 次 |
| 最近记录: |