16進数変換について教えてください。No.03918
櫻井章一 さん 03/10/29 00:38
 
16進数変換について教えてください。

たとえばテキストに表示されている
22234
00001
55533
のような”5桁”の10進数を16進数に変換したいのですが
マクロ初心者なのでやり方がよくわかりませんでした。

求める結果は以下のように
22234→2B67
00001→0001
55533→D8ED
と”4桁”表示にしたいと考えています。

マクロの動きとしては上記5桁の10進数に対しマクロを実行すると
2B67
0001
D8ED

と言ったように変換後の数値だけをテキストに表示させたいのですが
方法をご存知の方いらっしゃいましたら是非教えて頂けないでしょうか?
よろしくお願い致します。

[ ]
RE:03918 16進数変換について教えてくだNo.03919
Iranoan さん 03/10/29 01:11
 
 櫻井さん今日は、Iranoan です。
> 10進数を16進数に変換したいのですが
<中略>
> 変換後の数値だけをテキストに表示
 最終的にテキストに表示ということなので、hex 関数を使えば良いと思います。

[ ]
RE:03919 16進数変換について教えてくだNo.03920
櫻井章一 さん 03/10/29 09:14
 
今日は、櫻井です。
Iranoan さっそくのお返事ありがとうございました。
当初は下記のとおりマクロ作成しまし
これで変換し桁数をそろえて表示できると考えたのですが

 insertfix "0x";
 beginsel ;
 right 7;
 cut;
 beginclipboardread;
 $a=getclipboard;
 $senku=str(val($a));
 #henkan=strlen($henkan);

 if( #henkan == 1 ){
  $henkan = "000" + $hen
 }else if( #henkan == 2 ){
  $henkan = "00"+ $henka
 }else if( #henkan == 3 ){
  $henkan = "0"+ $henkan
 }else if( #henkan == 4 ){
  $henkan = ""+ $henkan;
 }
 insert $henkan;

うまく動作しませんでした。
hex 関数を使うということで

 beginsel ;
 right 5;
 cut;
 beginclipboardread;
 $a=getclipboard;
 $hen=str(val($a));
 #henkan=strlen(hex($hen));
 if( #henkan == 1 ){
  $henkan = "000" + $hen
 }else if( #henkan == 2 ){
  $henkan = "00"+ $henka
 }else if( #henkan == 3 ){
  $henkan = "0"+ $henkan
 }else if( #henkan == 4 ){
  $henkan = ""+ $henkan;
 }
 insert $henkan;

このようにしましたがうまく行きませんでした
もし、他の方法を知っていらっしゃいましたらどなたか教えていただけないでしょう
か?
上記コードも、かなりまずいかもしれませんが始めたばかりですのでお許しください。

[ ]
RE:03919 16進数変換について教えてくだNo.03921
たけのこ さん 03/10/29 09:22
 
一般ユーザのたけのこです。

>  最終的にテキストに表示ということなので、hex 関数を使えば良いと思います。

櫻井章一さんがワザワザ桁数を強調していることから、ミソはそこではない気が
……。

#i = 0;
$dec = "";
while(#i < 5){
  $dec = $dec + char(code);
  #i = #i + 1;
  delete;
}
insert rightstr("000" + hex(val($dec)), 4);

“5桁”の10進数字列の前にカーソルを置いてマクロを実行すると”4桁”の16
進数字列になります。

(^^)/”

[ ]
RE:03921 16進数変換について教えてくだNo.03922
櫻井章一 さん 03/10/29 10:00
 
今日は、たけのこさんありがとうございました。
まさに、そのコードで行いたい変換が行なえました
私には発想できないコードでしたのでほんとに勉強になりました。
これからも勉強したいと思います。
ほんとうにありがとうございました。

[ ]