我正在尝试从intelHex文件创建二进制文件。在我的intelHex文件中,我有数据和地址,我应该在二进制文件中写入数据。 IntelHex文件看起来像那样
:10010000214601360121470136007EFE09D2190140
:100110002146017EB7C20001FF5F16002148011988
:10012000194E79234623965778239EDA3F01B2CAA7
:100130003F0156702B5E712B722B732146013421C7
:00000001FF
所以我在这里有4行数据,因为最后一行告诉我们文件的结尾。 这是我正在做的创建文件
while (!streamReader.EndOfStream)
{
string temp = String.Empty;
int address = 0;
line = streamReader.ReadLine();
// Get address for each data
address = Convert.ToInt32(line.Substring(3, 4), 16);
// Get data from each line
temp = line.Substring(7, 2);
if (temp == "01")
break;
else
{
temp = line.Substring(9, line.Length - 11);
string[] array = new string[(temp.Length / 2)];
int j = 0;
for (int i = 0; i < array.Length; ++i)
{
array[i] = temp[j].ToString() + temp[j + 1].ToString();
j = j + 2;
}
temp = String.Empty;
for (int i = 0; i < array.Length; ++i)
{
temp = temp + Convert.ToChar(Convert.ToInt32(array[i], 16));
}
}
binaryWriter.Seek(address, SeekOrigin.Begin);
binaryWriter.Write(temp);
binaryWriter.Flush();
}
Console.WriteLine("Done...\nPress any key to exit...");
这里的问题是,某些地方的二进制文件中的数据不等于来自intelHex文件的数据。看起来有一些随机数据添加到文件中,我不知道从哪里。我第一次看到intelHex文件中的数据之前有一个额外的数据。例如,第一条数据行以21开头,但在二进制文件中,我在21之前有一个数字12.我不知道这里有什么问题。希望有人可以帮助我或指导我在哪里可以找到有关在C#中创建二进制文件的有用信息
答案 0 :(得分:2)
&lt;通用答案指出Unicode字符(char)不是八位字节(字节),并且代码产生错误的输出,因为二进制数据作为Unicode字符串写入文件。&gt;
提示:对二进制数据使用byte [],而不是字符串。
另外:在答案之前建议使用StringBuilder进行循环。