2015-10-31 190 views
-1

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

但我不能只得到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

,因为我需要在数据库文件中获取精确的文件名。 –

+0

您显示的十六进制文件没有文件扩展名,所以只需将其附加到转换后的字符串即可。 –

回答

0

您无法从突出显示的字节中获取文件扩展名。据我可以告诉他们包含一个十六进制文件名,你已经成功地提取,字符串字符(两个零)的结尾,位图的开始(BM)和位图的长度(little endian36 10 00 00)。因此,要获取文件名,您只需将.bmp附加到您的十六进制字符串。

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

相关问题