先の投稿の、「
Wankuma.Net.Mail を SMTP Auth に対応させる」のところで、TextConverter クラスに BytesToHexString 静的メソッドを追加実装したのだが、ここでちょっとなやんだ。
byte[] を 16 進文字列に変換する実装の定番は?
とりあえず、次の実装を採用した。
var src = new byte[]{0, 1, 2, 3};
var result = BitConverter.ToString(src).Replace("-", "");
ただ、BitConverter.ToString が区切り記号に含めてしまっているハイフンを、最後の Replace で 除去しているのが、どうにも気持ち悪い。
LINQ の Select 拡張メソッドで byte を 16進文字列に射影し、string.Join でまとめ上げてもよいが(下記)、
var src = new byte[]{0, 1, 2, 3};
var result = string.Join("", src.Select(b => string.Format("{0:x2}",b)));
アルゴリズム的には真っ当なものの、記述がごちゃごちゃする。
現実はこんなものなのか?
.NET Framework の内部ではどうやっているのか気になる。