gpt4 book ai didi

c# - 二进制数据与字符数据混淆

转载 作者:行者123 更新时间:2023-12-03 23:34:15 27 4
gpt4 key购买 nike

好的,所以我有一个函数,它获取图像文件的路径,并且应该以字符串形式返回二进制数据。然后调用者将返回的字符串插入到 XML 元素的内部文本中。

这是正确的吗?:

string dataAsString = "";
using (StreamReader sr = new StreamReader(new FileStream(mergedFile, FileMode.Open, FileAccess.Read, FileShare.Read, 2048, FileOptions.DeleteOnClose)))
dataAsString = sr.ReadToEnd();
return dataAsString;

这返回的内容看起来可能是合法的二进制数据,但如果我从目标文件中剪切并粘贴内容,将其粘贴到新的测试 tif 文件中,然后尝试打开 tif 图像,它会不满意我...所以我怀疑我读取/写入数据的方式有问题。

我真的必须做这样的事情吗?

using (BinaryReader br = new BinaryReader(new FileStream(mergedFile, FileMode.Open, FileAccess.Read, FileShare.Read, 1024, FileOptions.None)))      
{
int blockReadSz = 2048;
int bytesToRead = (int)br.BaseStream.Length;
int bytesRead = 0;
byte[] data = new byte[bytesToRead];
while (bytesRead < bytesToRead)
bytesRead += br.Read(data, bytesRead, blockReadSz);
}

如果是这样,读完文件后如何从 byte[] 中获取字符串?

感谢您的帮助! :D

最佳答案

你的要求根本没有意义。您无法将二进制数据读入字符串。

您可以轻松地将数据读入字节数组,而无需使用BinaryReader:

byte[] data = File.ReadAllBytes(mergedFile);

如果要将数据放入 XML 文档中,则必须以某种方式将其表示为文本,例如使用 base64 编码:

string text = Convert.ToBase64String(data);

您不能只是将数据解码为字符串,因为它不是首先编码的字符串。无论您使用哪种编码,二进制数据始终可以包含不代表通过编码文本生成的任何内容的字节序列。

关于c# - 二进制数据与字符数据混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/829940/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com