如果十六进制字符串有奇数个字符,如何将十六进制字符串转换为图像C#?

问题描述 投票:0回答:1

所以我遇到了一个问题,我不知道如何在 WPF 应用程序中将十六进制字符串转换为 BitmapImage。这几乎在这里得到解决:链接到问题+解决方案 我从中得到了这个脚本:

public BitmapImage StringToImage(string hex)
{
    int numberChars = hex.Length;
    byte[] bytes = new byte[numberChars / 2];
    for (int i = 0; i < numberChars; i += 2)
    {
        bytes[i / 2] = Convert.ToByte(hex.Substring(i, 2), 16);
    }

    using (var ms = new System.IO.MemoryStream(bytes))
    {
        var image = new BitmapImage();
        image.BeginInit();
        image.CacheOption = BitmapCacheOption.OnLoad;
        image.StreamSource = ms;
        image.EndInit();
        return image;
    }
}

所以当十六进制具有均匀数量的字符时,这非常有效,但问题是有时字符数量不均匀,那么它就不起作用。第一个解决办法是在前面或末尾加一个0,前面只是又报错,后面好像可以了。然而现在我意识到,如果我在十六进制字符串末尾添加 0,它只会生成图像的一半,而不是整个图像。 有谁知道如何解决这个问题?如果我能解决这个问题那就太棒了。

c# image hex
1个回答
0
投票

如果十六进制字符串有奇数个字符,则十六进制值是错误的,它不能是奇数

© www.soinside.com 2019 - 2024. All rights reserved.