たるこすの日記

たるこすの日記

リアルからバーチャルへ、バーチャルからリアルへ

バイナリデータを読むのに便利な VSCode の拡張機能「hexdump for VSCode」の紹介

はじめに

こんにちは、たるこすです。
みなさん、バイナリデータ読んでいますか?

今回は、バイナリデータを読むのに便利な Visual Studio Code(VSCode) の拡張機能「hexdump for VSCode」を紹介します。

以前まではバイナリデータを読むときには vim のバイナリモードを使っていたのですが、 この拡張機能があることを知り、使ってみたところとても便利でした。

twitter で軽くツイートしてみたら、800 件以上のリツイートと 1600 件以上のいいねがついたのでかなり驚きました。
これは興味がある方が多そうだということで、ブログ記事を書くことにしました。

hexdump for VSCode のインストール

VSCode をインストールしていない場合は、以下のサイトからインストールしてください。

code.visualstudio.com

VSCode を起動したら、左側のメニューの四角いアイコンが拡張機能のマークです。クリックし、検索欄に hexdump と入力します。 hexdump for VSCode が表示されたら、「インストール」ボタンをクリックします。

「再読み込み」ボタンをクリックすると、機能が有効になります。

hexdump for VSCode の使い方

hexdump for VSCode のインストールができていれば、ファイルを右クリックすると「Show Hexdump」というメニューが出てきます。

「Show Hexdump」をクリックすると、以下のようにバイナリデータが表示されます。

2桁の16進数ごとにスペースを空けて表示されています。この2桁の値が 1Byte です。また、右側の緑色で表示されているものは ascii コードで解釈したときの文字です。

スクリーンショットだとマウスカーソルが消えてしまっていますが、カーソルをデータに合わせるとそこから先の数倍とを Int8, Float32, Float64 などとして読んだときの値が表示されます。デフォルトでは Little Endian で値を解釈します。右クリックし、Toggle Between Little and Big Endian をクリックすると、Little Endian と Big Endian を切り替えられます。

STL を読んでみる

バイナリデータはただのバイト列なので、値を読み取るにはファイルフォーマットに沿って解釈していく必要があります。

今回は、3D モデルデータのフォーマットである STL ファイルを読んでみます。フォーマットについては、以下のページを参考にさせていただきました。モデルデータについても以下のページで配布されていた cube-binary.stl を使っています。

STLファイルフォーマット

最初の 80 バイトは文字列が入っているということで、右側の緑色の文字を読むと cube-binary というモデル名が入っていることがわかります。また、そのあとはスペースで埋められていますが、53バイト以降はよくわからない値が入っていました。

81バイト目から4バイトが三角形の枚数です。00000050: の右の 0C にカーソルを合わせると、以下のようになります。Uint 32: の欄を見ると 12 となっているので、三角形は 12 枚ということがわかります。

次からは 4 バイトの float が連続します。

00 00 00 00 00 00 00 80 00 00 80 3F

カーソルを合わせて Float32: の欄を読み取ると 0, 0, 1 と読み取ることができます。

ここから先も同様に float のデータを読んでいけば値を読み取っていけます。

おわりに

バイナリデータを読む機会があれば、「hexdump for VSCode」をぜひ使ってみてください。