十六进制值不写入图像

hex value not writing to image

我正在尝试构建一个更大的工具,它将从 .RTF 格式中获取十六进制字符串并将它们转储到文件中。这种从内存流写入文件的尝试在 ReadTimeout 和 WriteTimeout 上引发了 'System.InvalidOperationException' 类型的异常。我相信我有点不知所措。

我正在使用的代码是:

 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;
    }

}

如有任何帮助,我们将不胜感激

如果您只想获取一个十六进制字符串并将其转储到一个文件中,则无需通过将其包装在 MemoryStreamImage 中来使其过于复杂。只需将字节直接写入文件即可:

File.WriteAllBytes(@"C:\img.jpg", newByte);

您收到错误的原因正如 Ron 所评论的那样;您提供的十六进制字符串未形成有效的 JPEG 图像。