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


HSPTV!掲示板


未解決 解決 停止 削除要請

2006
1231
マッチョ文字列を数値に変える方法19解決


マッチョ

リンク

2006/12/31(Sun) 20:19:16|NO.4567

だれか、文字列を数値に変える方法を知っている人はいませんか。
いたら、その方法教えてください。よろしくお願い致します。



この記事に返信する


トホホッティー

リンク

2006/12/31(Sun) 20:52:50|NO.4568

int(a)



アキス

リンク

2006/12/31(Sun) 21:05:24|NO.4569

>トホホッティーさん
説明ぐらいはつけてみたらどうですか?
仮に僕が説明しますが、
intと言うのは整数値に変換する関数です。
()の中は整数に変換する数値および変数です。
つまり、
先ほどトホッホッティーさんが書いてくださった
int(a)
を計算式の中に埋め込み・・(intは関数なので計算式に入れる必要があります。)
//例
a=1.2
a=int(a)
mes "a="+a
すると、aには1.2を整数に変換した値。
つまり、aには1(だったはず)が代入されます。
これを文字列に置き換えると・・・
a="ABC" ;適当にABCを代入
a=int(a)
mes "a="+a
このようになり、ABCが数値になります。(実態は知りませんが・・・おそらく文字コード)
ちなみに
int 整数に変換
str 文字列に変換
double 実数(小数)に変換

のようになります。
分かったでしょうか?



Irisawa

リンク

2006/12/31(Sun) 23:14:50|NO.4570

> このようになり、ABCが数値になります。(実態は知りませんが・・・
> おそらく文字コード)

数値に変換できる文字列以外は0になります。


buf = "ABC" mes int(buf) ; 単純に変換すると 0 ; 16 進数として数値に変換する場合は ; "$" を頭に連結 mes int("$" + buf) ; 16 進数として変換(2748) ; HSP では左辺の型に自動キャストするため ; こうすることも可能 mes 0 + ("$" + buf) ; 16 進数の文字列に再変換 mes strf("%x", int("$" + buf)) ; (小文字) mes strf("%X", int("$" + buf)) ; (大文字) stop

ただの文字コードに変換するにはpeek系命令などで変数から読み込みます。



Shark++

リンク

2006/12/31(Sun) 23:28:41|NO.4571

ちなみにint()で16進の文字列を変換するときは 0〜9とA〜Fとa〜f 以外の文字が入っていると変換が停止せずに期待する結果とは異なるようですので
文字列を切り出すなどをした方がいいと思います。

buf = "ABC," mes int("$" + buf) ; 16 進数として変換(43968) mes strf("%X", int("$" + buf)) ; (大文字) "ABC0"



トホホッティー

リンク

2006/12/31(Sun) 23:52:54|NO.4572

基本的に質問に答えました。

文字列が数字だと予想できたため、あえてその解説ははぶきました。

説明の必要がある、質問だったのでしょうか?

マッチョさんは、マニュアル(ヘルプ)読んだのかな?

もしかして釣り???



Irisawa

リンク

2007/1/1(Mon) 00:14:49|NO.4574

>>トホホッティーさん
> 文字列が数字だと予想できたため、あえてその解説ははぶきました。

まあ、あった方が親切ですし、この場合は回答だって気がつかない場合もあるかも。
せめて、「intを使います。」くらいはいっておいた方が良かったかも。
どちらかとっていうと該当部分のスクリプトだけ書くよりはその為の命令や関数を提示して
使い方の方を調べるように奨めた方がいいでしょう。

> マッチョさんは、マニュアル(ヘルプ)読んだのかな?

まあ、初心者ならそもそもヘルプを読んでもどれでやりたいことができるのか分からないと
いうこともあると思いますし、1回目くらいは親切に教えた方がいいのかも知れません。
さすがに何度もちょっと調べればすぐに分かるような内容を質問してくるようならそれは
どうかと思いますけど。



ボボボーボボーボボ

リンク

2007/1/1(Mon) 08:42:07|NO.4579

トホホッティーへ
おまえさーちょっとコンテスト受賞してから天狗になりすぎてんじゃねぇの?解説省いたっつーかー人に説明できる自信がなかっただけじゃねぇの?
お前の説明っていうのはさーどうせ「int関数を使います」程度じゃねぇの?まぁその程度なら日本語を付けようが付けまいが大してかわりゃしねぇがな。
ちょっとお前さーint関数使わずに文字列を数値に変換するユーザー関数つくってみ?
さすがにお前の最初の回答は某掲示板の連中にそっくりだったぜー。おまえさー今までいろんな掲示板でそういう教わりかたしたんか?お前今プログラミング楽しんでねぇよ。コンテスト受賞者って響きに酔いしれて我忘れてんじゃねぇの?誰かこいつの目ぇ覚まさせてやってくれよ!!



ななし

リンク

2007/1/1(Mon) 08:54:10|NO.4580

なんでこんなにぐだぐだ説明してるやつの方が偉そうなんだ?
だいたい質問は 文字列を数値に変える方法 だ
こんなものは質問に値すべきではない物
トホホッティーの解答は簡潔で int なんてヘルプみりゃわかるもの
ヘルプの内容をここに書いてどうするんだか
初心者を甘く見すぎてるのではないのか
必要のない解答なんて無駄すぎるのではないのか
天狗になりすぎているのはボボボーボボーボボではないのか

この掲示板の常識がこんなものなのかもしれませんがね



ボボボーボボーボボ

リンク

2007/1/1(Mon) 09:21:38|NO.4581

sorry



Irisawa

リンク

2007/1/1(Mon) 11:26:05|NO.4584

>>ボボボーボボーボボさん、ななしさん
少なくても人を呼び捨てにしたり、ぞんざいな言葉遣いとかしている時点で場違いです。
ネットというのはどうしても本音とか出やすいですが、これを現実世界に例えてみてみると
赤の他人に対して同様の言葉遣い出来ますか?
そんなことしたら、非常に失礼ですよね。
よく考えてください。お願いします。

まあ、自分も人のこといえないと云われればそうなんですが。



トホホッティー

リンク

2007/1/1(Mon) 11:49:48|NO.4587

ボボボーボボーボボさんこれで文句ないですか?
変数は以前組んだものなのでめちゃくちゃですが、桁を多くしていけばいいです。
文字列に数字以外のものがあると0になります。また全角と半角の数値が混ざってたら
正しく変換されないのでご注意を。


*hajime screen 0 cls 4 zzaa="12345" inta=int(zzaa) gosub *henkan color 255,255,255 mes "int変換"+inta mes "変換後"+zzs mes " " zzaa="54321" inta=int(zzaa) gosub *henkan color 255,255,255 mes "int変換"+inta mes "変換後"+zzs mes " " zzaa="23434" inta=int(zzaa) gosub *henkan color 255,255,255 mes "int変換"+inta mes "変換後"+zzs stop *henkan zzs=0 kks=0 zzk=0 zzbb=zzaa zzbb=int(zzbb) zzbb=str(zzbb) if (zzaa=zzbb):zzbb=int(zzbb):zzs=zzbb:goto *zzato sdim zzab,100,100 zzab.0="0","1","2","3","4","5","6","7","8","9" zzac=strlen(zzaa) if zzac>10:zzk=1:return zzj=zzac/2 zzi=-2 zzss=0 if zzj=5:zzss=100000 if zzj=4:zzss=10000 if zzj=3:zzss=1000 if zzj=2:zzss=100 if zzj=1:zzss=10 repeat zzj zzi=zzi+2 zzss=zzss/10 zzjj=-1 zzk=1 repeat 10 zzjj++ zza=instr(zzaa,zzi,zzab.zzjj) if zza=0:zzs=zzs+(zzjj*zzss):zzk=0 loop if zzk=1:break loop *zzato return *dcdcdc return



マッチョ

リンク

2007/1/1(Mon) 12:30:32|NO.4588

そうすればよっかったんですか。どうも、たくさん返信し
てくださいまして誠に有難うございました。



リンク

2007/1/1(Mon) 18:16:30|NO.4594

>コンテスト受賞してから天狗になりすぎてんじゃねぇの
このあたりは同意



トホホッティー

リンク

2007/1/1(Mon) 18:55:13|NO.4595

>コンテスト受賞してから天狗になりすぎてんじゃねぇの
なら、おととしからうかれてましたか?

ちがうでしょ。

それとも言論の自由がないということでしょうか?
たまたま、最近投稿することが多くなっただけでこうも言われるのですね。

それならもし、発言するにしても質問の回答を答えてからにしてください。
回答に対して違う方法がある場合などに限ってください。

ここは、個人攻撃の場ではありません。
ただ回答の仕方によってそう聞こえる場合はご容赦ください。

あと、さっき乗せたプログラムは機能を実装しただけで正式なやりかたとは違うかもしれません。



リンク

2007/1/1(Mon) 19:45:13|NO.4598

一昨年の話はしてない。昨年のコンテストを受賞してからの話だ。

>ここは、個人攻撃の場ではありません。
なら個人攻撃されるような発言は控えろ。



トホホッティー

リンク

2007/1/1(Mon) 20:00:23|NO.4600

あさんお偉いんですね。

もういいや。

マッチョさんの質問に答えられたから。
最初のはちょっと失礼すぎましたね。
反省しております。
今後は、説明をしっかりしてみなさまに反感をもたれないような回答を心がけたいと思います。



ANTARES

リンク

2007/3/21(Wed) 05:21:00|NO.6454

>int関数使わずに文字列を数値に変換するユーザー関数つくってみ?
 亀レスでごめんよ〜
面白そうだったので作ってみました。
って、きっと誰も見ないよなあ〜(T_T)


#module #defcfunc int1 str in ret=0+in return ret #defcfunc int2 str in vin=in ret=0 l=strlen(in) repeat l ret=ret*10+peek(vin,cnt)-'0' loop return ret #global dat="" input dat,64,24 button "GO",*l_go stop *l_go mes "dat="+dat c= dat +"0": mes " dat +\"0\"="+c+" ←文字列だったらこうなる" c=int1(dat)+"0": mes "int1(dat)+\"0\"="+c c=int2(dat)+"0": mes "int2(dat)+\"0\"="+c stop



s

リンク

2007/3/21(Wed) 16:10:39|NO.6462

2ヵ月半でこれかよ



x

リンク

2007/3/21(Wed) 17:34:01|NO.6463

int2("あ")=923なのか。



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