web-dev-qa-db-ja.com

ToString( "X")は1桁の16進数を生成します

粗雑なデータスコープを作成しました。

(私たちが見つけたフリーウェア端末プログラムは、Bluetoothの速度についていくことができませんでした)

結果は大丈夫で、スプレッドシートで使用するためにカンマ区切りのファイルに書き込みます。 16進値が、現在の外観(スクリーンキャップが追加された)の代わりに、RichTextBoxのニース列に並んでいる方が良いでしょう。

これは、RichTextBoxのテキストに数字(_0_からFFなどの数字)を追加するルーチンです。

_  public void Write(byte[] b)
         {
             if (writting)
             {
                 for (int i = 0; i < b.Length; i++)
                 {
                     storage[sPlace++] = b[i];

                     pass += b[i].ToString("X") + " ";  //// <<<--- Here is the problem

                     if (sPlace % numericUpDown1.Value == 0)
                     {
                         pass += "\r\n";
                     }
                 }
             }
         }
_

命令pass += b[i].ToString("X") + " ";が_00h_から_0Fh_の値に先行ゼロを生成する方法が欲しい

または、バイトbの値を_00_からFFの2つのアルファベット文字に変換する他の方法

enter image description here

左側の数字、_FF 40 0 5_は同一であるため、すてきできれいに並んでいます。データの違いに遭遇するとすぐに、列は消え、データは人間の観察では非常に読みにくくなります。

22
User.1

composite 形式文字列を使用します。

pass += b[i].ToString("X2") + " ";

MSDNのドキュメント Standard Numeric Format Strings に例があります。

45
Oded

「X」はフォーマット指定子です。数値を16進数の文字列に変換します。

int _abc = 123456;
Console.WriteLine(_abc.ToString("X"));

これにより、出力として「1E240」が得られます

(1E240は123456の16進値です)

1