過去の桐井戸端BBS (桐ver.8)
16016 ある項目の数列を一括で16進数に変換したい じみ 2002/05/18-15:50
ものすごく初歩的な質問なのでしょうが、どうしても方法が分からないので教えてください。
ある項目の数列(10桁)を一括で16進数に置き換えるにはどうしたら良いでしょう?
お分かりになる方、ぜひご教示ください。お願いいたします。
16019 Re:進数変換 【多遊】 2002/05/18-16:38
記事番号16016へのコメント
じみさんこんにちは
表の項目を文字列で作成し計算式を#hex32([ある項目])と設定では?

16020 Re:進数変換 じみ 2002/05/18-16:50
記事番号16019へのコメント
多遊さんありがとうございます。
早速試したみたのですが、

KD1260:式の結果が代入または変換できないデータ型です

と表示されてしまうのです。
項目はちゃんと文字列に設定してあるのですが・・・・・・。
他に設定すべき箇所があるのでしょうか?


16021 Re:進数変換 【多遊】 2002/05/18-16:55
記事番号16019へのコメント
じみさんへ。訂正
>表の項目を文字列で作成し計算式を#hex32([ある項目])と設定では?

いま桐のヘルプで確認しましたら、
>num に指定できる数値は符号付きの 32 ビットで扱える範囲内の整数
 (-2147483648 〜 2147483647)です。
と、記載されてましたので、2147483647以上は無理なようです

これは、一括処理(イベント)など書かなければ無理かもしれませんネ
失礼いたしました。

16022 Re:進数変換 【多遊】 2002/05/18-17:01
記事番号16020へのコメント
同時の返事だったようですが、
>KD1260:式の結果が代入または変換できないデータ型です

このエラーは「ある数列」が、文字列っだたりすると出ます。
したがって、計算式を、#hex32(#数値([ある数列]))とすればなおると思いますが、
先にも書きましたように数値の限度があります

項目計算式だけで無理かも知れません。

16023 Re:進数変換 じみ 2002/05/18-17:12
記事番号16021へのコメント
多遊さんへ。

何度も親切にお教えいただきありがとうございます。とても感謝です。
ですが、処理したい数値が“2147483647以上”なのです。
残念。

でも、いろいろとご教示いただきありがとうございました。
16026 Re:進数変換 【多遊】 2002/05/18-18:05
記事番号16023へのコメント
じみさんへ
のりかかった舟で・・・

お手数をかけますが再度お試しいただけませんか?

なお式は掲示板では複数行に表示されるかもしれませんが
全部つながった1つの式です


#条件選択(#数値([ある数列])<=16777215,#hex32(#数値([ある数列])),1,#hex32
(#数値(#int(#数値([ある数列])/16^6)))+#右側文字列("00000"+#hex32(#数値
(#mod(#数値([ある数列]),16^6))),6))

16027 Re:進数変換 hidetake 2002/05/18-18:05
記事番号16023へのコメント
>ですが、処理したい数値が“2147483647以上”なのです。

コマンド書くならば次のような感じで
いけるでしょうか?

var 文字列{&Hex},数値{&Num}
キー入力 (1,1),&Num
call Dec2Hex(&Num)
確認 &Hex + " / "+ #hex32(&Num)
終了

proc Dec2Hex(数値 &Dec)
 var 数値{&Div,&Mod}
 &Div=#int(&Dec/16)
 &Mod=#mod(&Dec,16)
 &Hex=#sstr("0123456789ABCDEF",&Mod+1,1)+&Hex
 call (&Div) Dec2Hex(&Div)
end


16028 Re:進数変換 hidetake 2002/05/18-18:08
記事番号16027へのコメント
>コマンド書くならば次のような感じで
>いけるでしょうか?

先に【多遊】さんが、関数だけで分割して
計算する方法を出してましたね。 (^^;


16030 Re:進数変換 じみ 2002/05/18-18:47
記事番号16026へのコメント
多遊さんへ。

試してみました!!
できました!!
ありがとうございます!!

すごい!!
理屈はよく分かってませんが・・・・・・。
でも、助かりました。感謝です。
16031 Re:進数変換 じみ 2002/05/18-18:51
記事番号16028へのコメント
hidetakeさんへ。

せっかくお教えいただいたのですが、多遊さんがご教示くださった方法で処理してしまいました。
でも、そのお気遣いだけでも感謝です。今度はおふたりから教わった方法を使い分けて、活用したいと思います。

ホントに、ホントに、感謝です!!
そして、皆さんの桐の使いこなしぶりに敬服です。

それでは。

16032 Re:進数変換 【多遊】 2002/05/18-20:02
記事番号16027へのコメント
再帰ってこんなに簡単に使用できるのですね!

>var 文字列{&Hex},数値{&Num}
>キー入力 (1,1),&Num
>call Dec2Hex(&Num)
>確認 &Hex + " / "+ #hex32(&Num)
>終了
>
>proc Dec2Hex(数値 &Dec)
> var 数値{&Div,&Mod}
> &Div=#int(&Dec/16)
> &Mod=#mod(&Dec,16)
> &Hex=#sstr("0123456789ABCDEF",&Mod+1,1)+&Hex
確認 &Hex
> call (&Div) Dec2Hex(&Div)
>end
>

一行追加して拝見いたしました。

戻る