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


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
0213
甘酒文字列を16進数、2進数に変換14解決


甘酒

リンク

2013/2/13(Wed) 01:30:40|NO.52345

文字列を16進数、2進数に変換するにはどうすればいいでしょう。
文字列を16進数にするのは簡単にできたと思うんですが、どうすればいいか忘れてしまいました。
ご教授お願いします。



この記事に返信する


@key

リンク

2013/2/13(Wed) 01:57:20|NO.52346

結構最近のやつです
http://hsp.tv/play/pforum.php?mode=all&num=51927

記事検索で出たかも?



甘酒

リンク

2013/2/13(Wed) 02:17:10|NO.52347

>>@key さん
その記事だと16進数から10進数に変換しているように見えます。
私がやりたいのは、
「あいうえお」等の文字を16進数に変換、
更にその16進数を2進数に変換、ということがしたいのです。



@key

リンク

2013/2/13(Wed) 02:35:38|NO.52348

すいません16⇔10と勘違いしてました

16⇔10、10⇔2は簡単でも 16⇔2は難しいので10進を経由するのもあり



HT.

リンク

2013/2/13(Wed) 02:44:10|NO.52349

文字列を16進数に変換するという意味が分からないのですが(文字そのものはただの数値なので)
多分peek命令で1バイト取得したりして処理したいのかなと思います。後は数値を変換するのと変わりません。

data = "あいうえお" mes "::10進" repeat strlen(data) mes peek(data, cnt) loop mes "::16進" repeat strlen(data) mes strf("0x%02x", peek(data, cnt)) loop



ツノン

リンク

2013/2/13(Wed) 02:50:14|NO.52350

int 型に変換出来た場合、もうすでに、2進数に変換出来ていると考える事が出来ます。
下は整数を二進数文字列に変換する方法。

i=3:t="" repeat 32 t+=""+((i&(1<<(31-cnt)))!=0) loop mes t



甘酒

リンク

2013/2/13(Wed) 02:50:39|NO.52351

>>@key さん
なるほど。そうなのですね。
過去記事を参照し、
なんとか16進数→10進数→2進数にすることが出来ました。
しかし、僕の目的は、
「文字列を2進数にする」事です。
どうすれば文字列を16進数にできるでしょうか?



甘酒

リンク

2013/2/13(Wed) 02:54:11|NO.52352

書き込んでいる間に書き込まれたorz
>>NO.52349 さん
これです!これが僕のやりたかったことです。
勉強不足でした。非常に申し訳ない...
皆様ご回答ありがとうございました1



晩御飯

リンク

2013/2/13(Wed) 02:57:06|NO.52353

>なんとか16進数→10進数→2進数にすることが出来ました。
問題解決とは何ら関係ないけど10進数介さないほうが楽



@key

リンク

2013/2/13(Wed) 03:32:29|NO.52354

楽というのなら具体例をですね・・・



774

リンク

2013/2/13(Wed) 07:09:01|NO.52356

10進数を介するとか、冗談でしょ?


onexit goto *bye data = "あいうえお" mes "::16進" repeat strlen(data) mes strf("0x%02x", peek(data, cnt)) // ここから追記 temp="" for i,7,-1,-1 temp=temp+((peek(data, cnt)>>i)&0x01) next mes temp loop stop *bye end



通りすがり

リンク

2013/2/13(Wed) 09:17:09|NO.52358

何でもかんでもすぐ例を出しちゃうから自分で調べようとしない。
「へー、そんな方法があるんだ、もうちょっと詳しく調べてみよう」
くらいの意気が無いとアカンでしょう。
キーワードから正解を探す能力含めてプログラマだと思いますが。

16進の1桁は10進で0〜15。2進の4桁も0〜15。10進を介さないほうがずっと楽ですね?



@key

リンク

2013/2/13(Wed) 16:54:57|NO.52363

repeat-strlenをつかわない綺麗な方法が知りたかったりしたんです
strlenを使ったゴリ押しならいくらでもできますし・・・
自分的にはツノン氏の整数→2進数が好きです



HT.

リンク

2013/2/13(Wed) 20:34:38|NO.52367

> repeat-strlenをつかわない綺麗な方法が知りたかったりしたんです
> strlenを使ったゴリ押しならいくらでもできますし・・・
何か誤解していらっしゃるようですが、strlenは文字列をこれから変換するための整数に切り出す作業ですよ。
> int 型に変換出来た場合
と仰られているように、ツノンさんの掲示されたコードが出てくるのはそれからです。
ちなみにツノンさんのコードはHSPの一般的な数値型である32bit整数を2進数表記にするものですが、
今回は実質的にchar型で8bitずつしか処理しないので、その場合は774さんのコードが最適になりますね。



GENKI

リンク

2013/2/18(Mon) 23:53:26|NO.52496

昔書いたのをすっかり忘れてました。
http://hspdev-wiki.net/?%BF%F4%C3%CD%BD%F1%BC%B0%CA%D1%B4%B9

#uselib "msvcrt" #func ltoa_s "_ltoa_s" int,var,int,int x = "FF" sdim a,64 ltoa_s int("$"+x), a, 64,2 mes "0x" + x + " = %" + a



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