我正在尝试构建一个更大的工具,它将从.RTF格式获取十六进制字符串并将它们转储到文件中。这种从内存流写入文件的尝试抛出了类型为'System.InvalidOperationException'的异常。在ReadTimeout和WriteTimeout上。我相信,我有点过头了。
我正在使用的代码是:
private void button_Click(object sender, RoutedEventArgs e)
{
// Image hex data
string hexImgData = @"FFD8FFE000104A46494600010200006400640000FFFFD9";
// Call function to Convert the hex data to byte array
byte[] newByte = ToByteArray(hexImgData);
MemoryStream memStream = new MemoryStream(newByte);
// Save the memorystream to file
Image image = Image.FromStream(memStream, false, false);
image.Save(@"C:\img.jpg");
memStream.Close();
image.Dispose();
}
// Function converts hex data into byte array
public static byte[] ToByteArray(String HexString)
{
int NumberChars = HexString.Length;
byte[] bytes = new byte[NumberChars / 2];
for (int i = 0; i < NumberChars; i += 2)
{
bytes[i / 2] = Convert.ToByte(HexString.Substring(i, 2), 16);
}
return bytes;
}
}
任何帮助将不胜感激
答案 0 :(得分:1)
如果你想做的只是取一个十六进制字符串并将其转储到一个文件中,就不需要将它包装在MemoryStream
然后Image
中,使其过于复杂。只需将字节直接写入文件:
File.WriteAllBytes(@"C:\img.jpg", newByte);
你得到错误的原因是罗恩评论的;您提供的十六进制字符串不会形成有效的JPEG图像。