HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
0117
dff初めての進数計算8解決


dff

リンク

2013/1/17(Thu) 14:04:01|NO.51927

進数計算をHSPで作ってみました。
まだ私は中学生ですが、数学に興味があったので試しに作ってみました。
(16→10)


ssy="FF";入力文字列 ssd=0;変換後の文字を代入 //----1文字を読み込み repeat strlen(ssy) ftt1="":ftt1=strmid(ssy,strlen(ssy)-cnt-1,1);1文字ずつ読み込む(右から読み込む) fft2=getpath(ftt1,16);小文字変換 //----文字に変換 ftt3=0 if fft2="a"{ftt3=10:goto *main1} if fft2="b"{ftt3=11:goto *main1} if fft2="c"{ftt3=12:goto *main1} if fft2="d"{ftt3=13:goto *main1} if fft2="e"{ftt3=14:goto *main1} if fft2="f"{ftt3=15:goto *main1} if int(fft2)>-1&int(fft2)<11{ftt3=int(fft2)} *main1 //----進数の計算につかう乗を計算しておく zi=1;乗数を代入 repeat cnt:zi*16:loop //---- ssd+ftt3*zi;文字列を計算して代入 loop //--表示 mes "変換前:"+ssy+"" mes "変換後:"+ssd+""



この記事に返信する


@key

リンク

2013/1/17(Thu) 14:13:18|NO.51928

えっ

あ、うん
すごいよ!(出来ればその程度で投下はやめてくれ・・・)


      「strf命令」



dff

リンク

2013/1/17(Thu) 14:25:25|NO.51929

>>@keyさん
strf命令は知っていたのですが、自分で作ってみたかったのです。



skyblue

リンク

2013/1/17(Thu) 20:04:33|NO.51933

strfを使っても変換できない桁には自作するしかない。
その程度で投下はやめてくれとか言う以前にスレの種類がひとりごとなので
嫌ならみなければいい&返信しなければいいだけじゃ?



KA

リンク

2013/1/17(Thu) 21:51:32|NO.51939

>>数学に興味があったので試しに作ってみました
>>命令は知っていたのですが、自分で作ってみたかったのです。

その通り、そういう好奇心がプログラムを楽しくするのです。

ついでだから教科書の公式も作ってみましょう。
数式として表示するのは大分難しくなりますが、数値として表示させる
だけなら、答え合わせぐらいには使えるでしょう。

ヘロンの公式・余弦定理・三角関数・微積分・無限級数・飽和水蒸気圧
など、作ってみると何かと便利な場合があります。



GENKI

リンク

2013/1/17(Thu) 22:13:06|NO.51940

違うやり方をやってみた。

16進数 -> 10進数 変換

ssy="FF";入力文字列 ssd=0;変換後の文字を代入 //----1文字を読み込み ssyln = strlen(ssy) repeat ssyln ftt1 = "" : ftt1=strmid(ssy, ssyln-cnt-1,1);1文字ずつ読み込む(右から読み込む) fft2 = getpath(ftt1,16);小文字変換 //----文字に変換 ftt3=0 ; 文字コードを利用する v = wpeek(fft2, 0) if (v<48) | ((57<v)&(v<97)) | (102<v) : v = 48 ;エラー値は0とみなす if v > 57 { ;a-f v = v - 97 + 10 } else { ;0-9 v = v - 48 } //----進数の桁を調整 ; 元が16進数なので4ビットシフト v = v<<(cnt*4) //----結果(この場合どっちの表記でもいいですね) ssd |= v ; ssd += v loop //--表示 mes "変換前:"+ssy+"" mes "変換後:"+ssd+""



> 「strf命令」

うーん…どうやったらstrf命令で16進数文字列->10進数変換できるんでしょうか。
みんさんで来てるらしいので気になります。



kanahiron

リンク

2013/1/17(Thu) 22:22:05|NO.51941

こんな方法でもできますよ

moto = "FF";255 mes int("$"+moto)
これが一番単純で簡単だと思います



osakana

リンク

2013/1/18(Fri) 01:29:11|NO.51942

>どうやったらstrf命令で16進数文字列->10進数変換できるんでしょうか。
0x じゃなく $ じゃないと文字列では駄目なようですね。

mes strf("%d", $FF) mes strf("%d", 0xFF) mes strf("%d", "$FF") mes strf("%d", "0xFF") mes strf("%X", 255) mes strf("%X", "255")



osakana

リンク

2013/1/18(Fri) 05:35:33|NO.51943

ってこれ数値になってないですねボケてました...。
無理やりやるならこうですかね
int(strf("%d", $FF))
でもそれなら、それこそ
int("$"+0xFF) 十分でしたね
お目汚し失礼しました。



ONION software Copyright 1997-2023(c) All rights reserved.