トップ回答者
16進数について

質問
回答
-
ファイルのデータを16進数表現で表示するということでよろしいですか。
FileStream クラスhttp://msdn.microsoft.com/ja-jp/library/system.io.filestream(VS.85).aspx
BinaryReader.ReadByte
http://msdn.microsoft.com/ja-jp/library/system.io.binaryreader.readbyte(VS.85).aspx
String..::.Format メソッド (String, Object)
http://msdn.microsoft.com/ja-jp/library/fht0f5be.aspx複合書式設定
http://msdn.microsoft.com/ja-jp/library/txafckwd.aspx
標準の数値書式指定文字列
http://msdn.microsoft.com/ja-jp/library/dwhawy9k.aspx
を参考にすればできると思います。
-
外池と申します。
「具体的に教える」というのはどうすればよいのでしょう? プログラムを示して欲しいのでしょうか? しかし・・・、プログラムを読んで理解できますか? IIJIMASさんがご紹介になったサイトをご覧になってよくわからない、ということだと、プログラムそのものを示しても中身がほとんどチンプンカンプンになると思います。
私が提案できる方針は次のようなものです。まずは、TextBoxは忘れて、コンソールアプリをお奨めします。
コンソールアプリで、FileStreamを使ってファイル"C:\a.txt"を開きます。
このFileStreamでファイルのデータをバイナリーデータとしてByte型配列に読み込みます。(たぶん、一気に読み込んで良いかと)
で、まずは16進数ではなく、単純な整数型(0~255)で、コンソールに吐き出してみてください。書式は考えずに。
次は、Byte型配列を吐き出すフォーマットを16進数にしてみてください。これは、StringクラスのFormatメソッドでできます。
さらに、1バイトの表示を16進数を二桁+空白1個にそろえて、1行16バイト出力したら改行し・・・、というように、綺麗に並べて表示するように修正します。
これだけのものが書ければ、あとはTextBoxに出力するプログラムもすぐに出来ます。ご自分で調べて書く努力をしてください。
-
えー、具体的には次の様に書けば良いはずです。
Dim binTb As Byte()
binTb = My.Computer.FileSystem.ReadAllBytes("ファイルパス") '(a)
Label1.Text = "(" & binTb(0).ToString & ")" '(b)
Label1.Text = System.Convert.ToString(binTb(0), 16) '(c)(a)はバイナリーとして読み込み、(b)で1バイト分が表示されます。
しかし(b)では、0~255の数字になるので、16進表示する場合は、(c)で。
これでも、改行コードなどは1桁になってしまいますので、必ず2桁にするなら、
1桁のとき、頭に半角”0”を付けるなど工夫は必要です。
すべての返信
-
ファイルのデータを16進数表現で表示するということでよろしいですか。
FileStream クラスhttp://msdn.microsoft.com/ja-jp/library/system.io.filestream(VS.85).aspx
BinaryReader.ReadByte
http://msdn.microsoft.com/ja-jp/library/system.io.binaryreader.readbyte(VS.85).aspx
String..::.Format メソッド (String, Object)
http://msdn.microsoft.com/ja-jp/library/fht0f5be.aspx複合書式設定
http://msdn.microsoft.com/ja-jp/library/txafckwd.aspx
標準の数値書式指定文字列
http://msdn.microsoft.com/ja-jp/library/dwhawy9k.aspx
を参考にすればできると思います。
-
外池と申します。
「具体的に教える」というのはどうすればよいのでしょう? プログラムを示して欲しいのでしょうか? しかし・・・、プログラムを読んで理解できますか? IIJIMASさんがご紹介になったサイトをご覧になってよくわからない、ということだと、プログラムそのものを示しても中身がほとんどチンプンカンプンになると思います。
私が提案できる方針は次のようなものです。まずは、TextBoxは忘れて、コンソールアプリをお奨めします。
コンソールアプリで、FileStreamを使ってファイル"C:\a.txt"を開きます。
このFileStreamでファイルのデータをバイナリーデータとしてByte型配列に読み込みます。(たぶん、一気に読み込んで良いかと)
で、まずは16進数ではなく、単純な整数型(0~255)で、コンソールに吐き出してみてください。書式は考えずに。
次は、Byte型配列を吐き出すフォーマットを16進数にしてみてください。これは、StringクラスのFormatメソッドでできます。
さらに、1バイトの表示を16進数を二桁+空白1個にそろえて、1行16バイト出力したら改行し・・・、というように、綺麗に並べて表示するように修正します。
これだけのものが書ければ、あとはTextBoxに出力するプログラムもすぐに出来ます。ご自分で調べて書く努力をしてください。
-
えー、具体的には次の様に書けば良いはずです。
Dim binTb As Byte()
binTb = My.Computer.FileSystem.ReadAllBytes("ファイルパス") '(a)
Label1.Text = "(" & binTb(0).ToString & ")" '(b)
Label1.Text = System.Convert.ToString(binTb(0), 16) '(c)(a)はバイナリーとして読み込み、(b)で1バイト分が表示されます。
しかし(b)では、0~255の数字になるので、16進表示する場合は、(c)で。
これでも、改行コードなどは1桁になってしまいますので、必ず2桁にするなら、
1桁のとき、頭に半角”0”を付けるなど工夫は必要です。
-
こんにちは!フォーラムオペレータの栗原麻里です
IIJIMAS さん、外池 さん、trapemiya さん、葉流奈津 さん、回答ありがとうございます。
taiyaki さん、フォーラムのご利用ありがとうございます。
回答が参考になったようですので、回答者の皆様の回答に回答済みチェックをつけさせていただきました。
回答済みチェックがつくことによって、フォーラムをご利用の皆様も有用な情報が見つけやすくなります。
回答がお役に立ちましたら、回答済みボタンを押してチェックをつけてくださいね!
taiyaki さんはチェックを解除することもできますので、ご確認ください。
それでは、ぜひまたフォーラムをご活用下さい!