C#hex to string问题

时间:2015-10-31 04:55:56

标签: c# string

我使用CSharp语言编写程序。 但是,我有一个很大的问题。 我正在编写一个程序,用十六进制读取文件并将十六进制转换为字符串。 但是,我无法完美地获得字符串。 蓝色的是我要转换为字符串的十六进制代码。 this is hex code...

但我不能只获得59fd50a62fb9a8ef,不包括文件扩展名。

我希望得到完美的字符串,如59fd50a62f9a8ef.bmp

我该怎么办?

这是将十六进制转换为字符串的源代码。

    string toString(string hexString)
    {
        var bytes = new byte[hexString.Length / 2];
        for (var i = 0; i < bytes.Length; i++)
        {
            bytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
        }
        return Encoding.Unicode.GetString(bytes);
    }

1 个答案:

答案 0 :(得分:0)

您无法从突出显示的字节中获取文件扩展名。据我所知,它们包含一个十六进制文件名,你已经成功提取了它,一个字符串结尾(两个零),一个位图的开头(BM)和位图的长度({{在little endian)中的1}}。因此,要获取文件名,您只需将36 10 00 00附加到十六进制字符串。

但是,如果图像并不总是位图,那么您应该创建一个函数,从字符串字符结尾后的字节中推断出文件类型。