我使用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);
}
答案 0 :(得分:0)
您无法从突出显示的字节中获取文件扩展名。据我所知,它们包含一个十六进制文件名,你已经成功提取了它,一个字符串结尾(两个零),一个位图的开头(BM
)和位图的长度({{在little endian)中的1}}。因此,要获取文件名,您只需将36 10 00 00
附加到十六进制字符串。
但是,如果图像并不总是位图,那么您应该创建一个函数,从字符串字符结尾后的字节中推断出文件类型。