数値を16進数で表示No.02829
ボーノ さん 01/12/13 11:40
 
こんにちは、ボーノと言います。よろしくお願いします。

マクロで数値を16進数で表示する関数又は方法はありますでしょうか?

例えば以下のようなマクロで、
秀丸のカーソル位置に "0" (半角数字のゼロ) があるときに実行すると
48 と表示されますが、これを 30 と表示したいのです。
又は "あ" の場合は、82A0 と表示したいです。(SJISです)

#c = code;
message str( #c );

方法をご存知の方がいらっしゃいましたら、教えていただけますでしょうか?

よろしくお願いいたします。

[ ]
RE:02829 数値を16進数で表示No.02833
TAKA さん 01/12/13 13:00
 
ボーノさん、はじめまして。TAKA と申します。

>マクロで数値を16進数で表示する関数又は方法はありますでしょうか?

目的が、カーソル位置の文字コードを知りたいということなら、
「その他→コマンド一覧→その他→文字コード表示」で可能です。
マクロ命令では「showcode」です。

そうではなく、純粋に16進に変換したいのであれば、自分で作る
しかありません。

// テストマクロ(ここから)
    #Code = code;
    call Change #Code;
    message $$return;
    endmacro;

Change:
    ##Wk = ##1;
    $$Str = "";
    while( 1 )
    {
        ##Wk2 = ##Wk % 16;
        if( ##Wk2 >= 10 )
        { // A以上
            $$Str = char( 0x41 + ##Wk2 - 10 ) + $$Str;
        }
        else
        { // 数値
            $$Str = str( ##Wk2 ) + $$Str;
        }
        ##Wk = ##Wk / 16;
        if( ##Wk == 0 ) break;
    }
    return $$Str;
// テストマクロ(ここまで)

[ ]
RE:02833 数値を16進数で表示No.02835
ボーノ さん 01/12/13 13:40
 
>そうではなく、純粋に16進に変換したいのであれば、自分で作る
>しかありません。

まさにTAKAさんが作成したマクロと同じ事をしたかったんです。
TAKAさん、ありがとうございました。

[ ]
RE:02833 数値を16進数で表示No.02840
きいろいまふらあ さん 01/12/14 00:03
 
変換部分をちょっと細工。
こんなやりかたもありますよ、ってことで。

>// テストマクロ(ここから)
>    #Code = code;
>    call Change #Code;
>    message $$return;
>    endmacro;
>
>Change:
>    ##Wk = ##1;
>    $$Str = "";
>    while( 1 )
>    {
>        ##Wk2 = ##Wk % 16;
        $$Str = mid("0123456789ABCDEF",##Wk2+1,1) + $$Str;
>        ##Wk = ##Wk / 16;
>        if( ##Wk == 0 ) break;
>    }
>    return $$Str;
>// テストマクロ(ここまで)

[ ]
RE:02840 数値を16進数で表示No.02842
TAKA さん 01/12/14 00:15
 
TAKA です。

>        $$Str = mid("0123456789ABCDEF",##Wk2+1,1) + $$Str;

        $$Str = midstr("0123456789ABCDEF",##Wk2,1) + $$Str;

ですね。

[ ]
RE:02842 数値を16進数で表示No.02844
きいろいまふらあ さん 01/12/14 03:10
 
>>        $$Str = mid("0123456789ABCDEF",##Wk2+1,1) + $$Str;
>
>        $$Str = midstr("0123456789ABCDEF",##Wk2,1) + $$Str;
>
>ですね。

そうです。(^^;
おかしいな。両方とも直してから送信したはずだったのに。

[ ]