« 文字コードが全角文字かどうか判定する | トップページ | Windows10で、入力画面のカーソルが点滅しない »

2017年4月17日 (月)

16進数の表記

QXエディタのマクロ言語についての説明ですが、ほかのプログラミング言語を使っている人にも参考になると思います。

16進数と10進数の区別

プログラムのなかでは16進数をあつかうことがあるので、10進数と区別するため、数字の頭に &H または 0x をつけます。
↓↓↓↓ このサイトによると、どちらをつけるかは、言語によって決まっているそうです。
16進数 ‐ 通信用語の基礎知識
>BASICでは、&Hを前置する(例: &H1010)。
>CやC++では、0xを前置する(例: 0x1010)。

QXエディタのマクロはBASIC系の言語なので &H を使います。
&H で始まる数字は16進数
数字だけがならんでいれば10進数
……として処理します。たぶん8進数は処理できません。ヘルプにはなにも書いてないので。

《注》 QXのマクロの場合、&H の H は大文字でも小文字でもかまいません。たとえば下に示したマクロヘルプのように。

>@@LastKey プロパティ
> コマンドを実行のキー入力情報を取得します。9回前まで取得できます。
>書式
>@@LastKey(num)
> num: n個前の情報を取得(0~ )
>
>返値
>特殊キーの時 &h80000000 + 仮想キーコード+ シフトコード * &h10000
>特殊キー以外の時 1バイト目のコード + &h100 * 2バイト目のコード +
> 1バイト目のシフトコード + &h10000 * 2バイト目のシフトコード * &h1000000
> 1バイト目しかないときは2バイト目のコードは 0
>IME 入力を行った時 0xff

↑↑↑↑ ほかの戻り値の頭には&Hがついているのに、なぜか「IME 入力を行った時」の戻り値だけ、0xで始まっています。QXのヘルプで16進数を表す 0x が出てくるのは、この一箇所だけ。

ちなみに、この行を計算マクロ(by ねこみみ) は &H でも 0x でも動きます。
たとえば、
0xaa の行にカーソルを置いてマクロを実行すると 0xaa=170 となり、
&Haa の行にカーソルを置いてマクロを実行すると &Haa=170 となります。
170 の行にカーソルを置いてマクロを実行すると 170=0xAA(10進数を16進数に変換)。

語源

16進数は英語で hexadecimal number。
語源はギリシャ数詞の hexadeca(ヘクサデカ)。hexa が 6、deca が 10、英語の sixteen にあたります。
hexa の省略形は hex。
&H の H は hex の h、
0x の x は hex の x だそうです。
& と 0 は強調のため、というか、分かりやすくするため。

QXマクロで10進数を16進数に変換する関数は hex$() 。具体的な使用例は、こちら。文字コードが全角文字かどうか判定する

 
QXエディタ入門

 ネット検索では一部しかヒットしません。記事は目次から探してください。
   記事の訂正などの最新情報は、こちら。総合案内(おしらせ)

                  ┏よくある質問
                  ┃QXの設定
                  ┃標準設定のQXを使う
       すべての目次━╋QXを使う
                  ┃マクロ
                  ┃QTClip QGREP どこでもホイール
                  ┗パソコンが苦手なかたへ

   QXエディタ入門からGoogleで
   サイト内検索のコツ

 

|

« 文字コードが全角文字かどうか判定する | トップページ | Windows10で、入力画面のカーソルが点滅しない »