バイナリデータを読むのに便利な VSCode の拡張機能「hexdump for VSCode」の紹介
はじめに
こんにちは、たるこすです。
みなさん、バイナリデータ読んでいますか?
今回は、バイナリデータを読むのに便利な Visual Studio Code(VSCode) の拡張機能「hexdump for VSCode」を紹介します。
以前まではバイナリデータを読むときには vim のバイナリモードを使っていたのですが、 この拡張機能があることを知り、使ってみたところとても便利でした。
VS Code の拡張の 「hexdump for VSCode」がめっちゃ便利だった。
— たるこす (@tarukosu) 2018年6月20日
マウスカーソルを合わせるとそこから先の数バイトを Int とか Float とかとして読んだ場合の値を表示してくれる pic.twitter.com/vSF5vC8GTw
twitter で軽くツイートしてみたら、800 件以上のリツイートと 1600 件以上のいいねがついたのでかなり驚きました。
これは興味がある方が多そうだということで、ブログ記事を書くことにしました。
hexdump for VSCode のインストール
VSCode をインストールしていない場合は、以下のサイトからインストールしてください。
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 を使っています。
最初の 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」をぜひ使ってみてください。