2016-05-09 13 views
3

このコードは、デスクトップ上のファイルのMD5ハッシュを計算して出力するためのものです。しかし、コンパイル時にコンソールウィンドウに書き込まれるのは "System.Byte []"です。ToString()を置くことでも問題は解決されませんでした。"実際のデータの代わりにSystem.Byte []"が返されています

MD5 a = MD5.Create(); 
Console.Write(a.ComputeHash(File.OpenRead(@"C:\Users\TTDDWW\Desktop\putty.exe"))); 
Console.ReadKey(); 
+1

'Console.Write'は、オブジェクトの文字列表現を作成するために' Object.ToString'メソッドに依存します。 'Array'はこのメソッドをオーバーライドしないので、配列の場合は型名を返します。これがデフォルトの実装です。バイト配列の16進表現を作成するには、 'BitConverter.ToString'を使います。 – ach

+0

ありがとう、それは事を完全に説明する! –

+0

[MD5クラスのMSDNページ](https://msdn.microsoft.com/en-us/library/s02tk69a.aspx)には、実際に何をしたいかを正確に示す例があります。 – Nyerguds

答えて

3

あなたはbyte[]配列のうち16進数文字列を作成するためにBitConverterを使用することができます。

MD5 a = MD5.Create(); 
byte[] hash = a.ComputeHash(File.OpenRead(@"C:\Users\TTDDWW\Desktop\putty.exe")); 
string hexString = BitConverter.ToString(hash).Replace("-", string.Empty).ToLower(); 
Console.Write(hexString); 

BitConverter.ToString()はあなたにフォームの表現を与えるAA-AA-AA-AAますので、ハイフンを削除し、文字列の小文字をしなければなりません一般的なMD5の16進文字列を取得します。

+0

また、バイトに '.ToString(" x2 ")'を使うこともできます;) – Nyerguds

関連する問題