【Excel】進数変換のやり方 — 16進数を10進数・2進数に変換してビットを抽出する

Excel
この記事は約3分で読めます。

この記事で分かること

  • 16進数のデータを10進数・2進数に変換する関数(HEX2DEC・HEX2BIN)
  • 変換した2進数から任意のビットを取り出す方法
  • 上位の 0 が消えて桁がずれる問題と、TEXT関数での直し方

どんな場面で使うか

PLCなどでIOデータをログに取って解析するとき、16進数から10進数や2進数に変換したいときがあります。そんなときの変換・解析方法について紹介します。

例えば1ByteデータがD2と16進数で表示されているときに、以下のように変換・抽出しました。

  • 10進数へ変換
  • 2進数へ変換
  • 各ビットの抽出
  • 再度結合

HEX・DEC・BINの変換結果とビット抽出


使う関数

関数で表すとこのようになります。

  • 16進数→10進数:HEX2DEC関数
  • 16進数→2進数:HEX2BIN関数
  • 抽出:RIGHT、LEFT、MID関数
  • 連結:CONCATENATE関数

BIN関数で2進数に変換したので、*bitは右から数えたときの順番になります。 連結するときは大きい方の4bitから書くので注意が必要です。


どちらの進数で見るか

アナログデータなどでそのまま読みたい場合は10進数に変換して見やすくなりますし、IOなどのデジタルデータを扱う時は2進数に変えてビット単位で見た方が分かりやすくなります。

Wordデータを扱う場合も同様の考え方でデータを分解・解析できます。


よくあるつまずき:先頭の 0 が消えて桁がずれる

最初は8bitの先頭に1が入る時で説明をしましたが、0が来る場合には注意が必要です。 例えば、6Bのようなデータを同様に分解するとこのようになります。

赤字で書いている部分が誤っている箇所です。 8bit目が0ですが、通常Excelでは上位側の0は表示されないのでその分ずれてしまいます。

扱う単位が決まっているため、TEXT関数を使って毎回8桁表示させるようにすることで解決できます。

この結果がこちらになります。 これで先頭に0が来ても正しく値を抽出することができます。


関連記事


サンプルはこちら 【Excel】 サンプル公開

タイトルとURLをコピーしました