文字列を2進数と16進数に変換 – プログラミング – Home

文字列を2進数と16進数に変換
 
通知
すべてクリア

文字列を2進数と16進数に変換


木之下
 木之下
(@木之下)
ゲスト
結合: 23年前
投稿: 3
Topic starter  

初めまして、木之下という者です。
Win2000でVC6.0MFCで開発しているのですが、文字列を2進数と16進数に変換(その逆も)する必要があるのですが、関数を色々調べてもよくわかりません。
初心者の為的外れな質問になっているかもしれませんが、よろしくお願いします。


引用解決済
トピックタグ
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

こんにちは。

intならば、_ltoa, atoiでできます。
MSDNの「データ変換」というトピックに変換関数が一覧されています。
用途に合ったものを探してください。


返信引用
中級者X
 中級者X
(@中級者X)
ゲスト
結合: 23年前
投稿: 26
 

「文字列を2進数と16進数に変換」という表現が間違っていることをまず理解しましょう。
「2進数や16進数を表す文字列を数値に変換」なら正しいです。
strtolやstrtodを調べましょう。

逆に「数値を2進数や16進数を表す文字列に変換」するならsprintfやCString::Formatを
調べましょう。

2進数は無理か...。
1ビットずつ調べて文字列に変換するような自作関数を作りましょう。

参考:
http://alfin.mine.utsunomiya-u.ac.jp/~niy/algo/


返信引用
木之下
 木之下
(@木之下)
ゲスト
結合: 23年前
投稿: 3
Topic starter  

私には「2進数や16進数を表す文字列を数値に変換」というのがよく理解できなかったので、もう少し質問させて下さい。
実例を挙げてみると、私は「あ」を「82A0」や「1000001010100000」に変換したいのですが、教えて下さったやりかたでよいのでしょうか?


返信引用
中級者X
 中級者X
(@中級者X)
ゲスト
結合: 23年前
投稿: 26
 

最初にその実例を書いてもらえれば分かりやすいのに。

2進数は面倒なので省きます。

unsigned char buf[] = あ;
char str[10];
sprintf(str, %02X%02X, buf[0], buf[1]);

とか。
逆は考えてみてください。
strtolを使えばできるでしょう。
もちろんそれだけでできるかといえばそうではなくて、
他にすることはあるでしょうけど。

どうしても分からない場合は再度質問してください。
まずは自分で考えてみる(調べてみる)ことが大切です。


返信引用
saito( );
 saito( );
(@saito( );)
ゲスト
結合: 23年前
投稿: 25
 

わたしも、ここで皆さんにお世話になっている者です。
(つまり、超初心者・・・)

たぶん、木之下さんは、
『数字:1,2・・(a=1+2と言う風に計算できるもの)

『画面上や、プリントアウトできる『文字:1,2・・・(これは
 a='1'+'2'となり、計算できない(=3とはならない)
をいっしょと勘違いしているのではないでしょうか?

数字の1はあくまで、1で,文字の1はPC内では'49'(ASCIIのとき)として
取り扱っております。

おなじように、『あ』も'1’と同じ文字なので'82A0'という
コード(JIS???)にて取り扱っています。

そこの違いを考えると、
『文字コード』取り出し関数ー>『コード(数値)->文字』変更関数ー>表示

または、CString::Frmat(%d,i+'A')・・・・

とか、何の関数を捜せばよいかがわかるのでは?

すみません。ご存知かもわかりませんが、
参考までに。
(超初心者より・・・)でした。


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

> 2進数は無理か...。

int n = 変換したい数字;
char buffer[33]; // 32ビット+NULLが最大
_ltoa(n, buffer, 2);

ですー。


返信引用
木之下
 木之下
(@木之下)
ゲスト
結合: 23年前
投稿: 3
Topic starter  

みなさん、ご教授ありがとうございます。
しばらく、がんばってみます。

>saito( );さん
えっと、作ろうとしているプログラムは文章を2進数で表現するものなのです。
それと逆に、2進数から元の文章に戻すというものも作っています。
つまり、文章を0と1のみで表記し、さらに元の文章に戻すというものです。
ですので、計算等に使うわけではありません。(もしかしたら、語弊が生じているかもしれません)


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました