gpt4 book ai didi

C#读取和替换文本文件中的二进制数据

转载 作者:太空宇宙 更新时间:2023-11-03 16:44:19 26 4
gpt4 key购买 nike

我有一个包含文本数据和二进制数据的文件。这可能不是一个好主意,但我对此无能为力。我知道二进制数据的结束和开始位置。

读取这些位置之间的二进制数据、从中生成 Base64 字符串,然后将其写回到原来的位置的最佳方法是什么。

编辑:Base64 编码的字符串与二进制数据的长度不同,因此我可能必须将 Base64 字符串填充为二进制数据的长度。

最佳答案

int binaryStart = 100;
int binaryEnd = 150;

//buffer to copy the remaining data to it and insert it after inserting the base64string
byte[] dataTailBuffer = null;

string base64String = null;

//get the binary data and convert it to base64string
using (System.IO.Stream fileStream = new FileStream(@"c:\Test Soap", FileMode.Open, FileAccess.Read))
{
using (System.IO.BinaryReader reader = new BinaryReader(fileStream))
{
reader.BaseStream.Seek(binaryStart, SeekOrigin.Begin);

var buffer = new byte[binaryEnd - binaryStart];

reader.Read(buffer, 0, buffer.Length);

base64String = Convert.ToBase64String(buffer);

if (reader.BaseStream.Position < reader.BaseStream.Length - 1)
{
dataTailBuffer = new byte[reader.BaseStream.Length - reader.BaseStream.Position];

reader.Read(dataTailBuffer, 0, dataTailBuffer.Length);
}
}
}

//write the new base64string at specifid location.
using (System.IO.Stream fileStream = new FileStream(@"C:\test soap", FileMode.Open, FileAccess.Write))
{
using (System.IO.BinaryWriter writer = new BinaryWriter(fileStream))
{
writer.Seek(binaryStart, SeekOrigin.Begin);

writer.Write(base64String);//writer.Write(Convert.FromBase64String(base64String));

if (dataTailBuffer != null)
{
writer.Write(dataTailBuffer, 0, dataTailBuffer.Length);
}
}
}

关于C#读取和替换文本文件中的二进制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6512013/

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