【发布时间】:2018-07-11 09:43:28
【问题描述】:
我正在尝试将二进制文件读入字节数组。
我需要以 DWORD 块(或 4 个字节)读取文件,并将每个块存储到字节数组的单个元素中。这是我迄今为止所取得的成就。
using (var fs = new FileStream(path, FileMode.Open, FileAccess.Read))
{
var block = new byte[4];
while (true)
{
byte[] temp = new byte[4];
fs.Read(temp, 0, 4);
uint read = (byte)BitConverter.ToUInt32(temp, 0);
block[0] = read???
}
}
但是,将uint read 转换为block[0] 的元素不起作用。我似乎找不到不产生错误的方法。
感谢您的意见。
【问题讨论】:
-
你需要一个位掩码。
-
我的问题是:如果您需要
byte[]表单中的temp,为什么要将其转换为uint? -
我不清楚你的描述。一个块是一个 DWORD,而您希望每个块进入一个字节数组的单个元素?这没有任何意义。请更详细地描述您想要做什么。
-
我是否认为即使文件的每个元素都是 DWORD(4 字节小端无符号整数),每个整数的值也不会超过 255,因此你是将值提取为字节?如果是这样,您可以只使用
temp[0]的值作为您的字节值而忽略其他三个字节吗?此外,BinaryReader类可以帮助您实现这一目标,而无需读取原始数据并BitConvertering 它。 -
没有多少技术帮助可以解决逻辑上的不可能,例如想要将一夸脱放入品脱罐中,或者在这里您显然想要将 4 个字节存储到一个字节中。如果这不是你想要做的,请编辑你的叙述,让你在这里的总体任务更加清晰。
标签: c# arrays filestream dword