No.17459![]() |
16進→10進の方法 投稿者---やすすけ(2004/10/22 23:23:51) |
||
OAKS16というCPUボードを使ってC言語の勉強をしているのですが行き詰っています。 ポート3(8bit)からのSW入力を確認し、その数値の10進数、ASCIIコードを液晶に表示させたいのですが16進数から10進数への変換の地点で躓いてます。 例)SW入力(0xFF)→ 液晶に”256”、”66,66”を表示 何かいい方法があれば教えてください。 |
No.17460![]() |
Re:16進→10進の方法 投稿者---YuO(2004/10/23 00:45:30) |
||
>ポート3(8bit)からのSW入力を確認し、その数値の10進数、ASCIIコードを液晶に表示させたいのですが16進数から10進数への変換の地点で躓いてます。 >例)SW入力(0xFF)→ 液晶に”256”、”66,66”を表示 0xFFがどうして256や66,66になるのか,変換の法則を記述して下さい。 #255 / 70, 70ならわかるが。 とりあえず,printfだのsprintfだのが使えるのであればそれを使い, 使えないのであれば自分で書く必要があります。 |
No.17474![]() |
Re:16進→10進の方法 投稿者---やすすけ(2004/10/23 18:00:05) |
||
>0xFFがどうして256や66,66になるのか,変換の法則を記述して下さい。 >#255 / 70, 70ならわかるが。 すみませんでした。0xffなので 255 / 66,66 ですね。 仮に0xffとした場合、液晶に送るデータとしては 2,5,5 が必要になってくると思うのですが、このデータの作り方としてはどのような方法があるのでしょうか? ご回答、お願いします。 |
No.17475![]() |
Re:16進→10進の方法 投稿者---あかま(2004/10/23 18:27:32) |
||
>仮に0xffとした場合、液晶に送るデータとしては 2,5,5 が必要になってくると思うのですが、このデータの作り方としてはどのような方法があるのでしょうか? 255を100で割る。2が出る。 2*100を引いて10で割る。5が出る さらに5*10を引いて1で割る。5が出る >ご回答、お願いします。 とりあえず、どんな出力方法があるのか分からないと書けないと思うのだけど。 出力関数にはどんなものが? そもそも0xffをそのまま出力しようとするとどう表示されるのか興味が。 printfがないんじゃCの勉強としてはやりにくいのでは? |
No.17476![]() |
Re:16進→10進の方法 投稿者---やすすけ(2004/10/23 19:08:35) |
||
>255を100で割る。2が出る。 >2*100を引いて10で割る。5が出る >さらに5*10を引いて1で割る。5が出る > >>ご回答、お願いします。 >とりあえず、どんな出力方法があるのか分からないと書けないと思うのだけど。 >出力関数にはどんなものが? >そもそも0xffをそのまま出力しようとするとどう表示されるのか興味が。 > >printfがないんじゃCの勉強としてはやりにくいのでは? > ご回答有難うございます。 学習用のCPUボード(cpu-MC16)を使用してまして8個のSWから8bitの信号入力を受けて、その数値を10進数に変換したものと、アスキーコードを液晶(16文字×2行)に表示させるという課題があるんですよ。 液晶表示用のルーチンは作成したんで問題ないんですが、16進→10進の変換方法がわからなくて困ってたんです。 あとアスキーコードへの変換方法は0〜9までは+30h、a〜fまでは+57hでいいんですよね? |
No.17491![]() |
Re:16進→10進の方法 投稿者---REE(2004/10/25 10:26:45) |
||
>液晶表示用のルーチンは作成したんで問題ないんですが、16進→10進の変換方法がわからなくて困ってたんです。 その表示用のルーチンの入力がどのようなものか分からないので、 回答者も何を求めればいいのか分からないのです。 >あとアスキーコードへの変換方法は0〜9までは+30h、a〜fまでは+57hでいいんですよね? これで大丈夫そうです。 |
No.17492![]() |
Re:16進→10進の方法 投稿者---YuO(2004/10/25 10:59:45) |
||
>あとアスキーコードへの変換方法は0〜9までは+30h、a〜fまでは+57hでいいんですよね? そんな計算しなくても,たとえば "0123456789abcdef"[val & 0x0F]のようにすると, valの下位4bitが16進文字に変換されますよ。 #というか,文字コードへの依存を無くすのでこちらの方が望ましいと思う。 |
No.17493![]() |
Re:16進→10進の方法 投稿者---やすすけ(2004/10/25 16:31:03) |
||
>そんな計算しなくても,たとえば "0123456789abcdef"[val & 0x0F]のようにすると, >valの下位4bitが16進文字に変換されますよ。 >#というか,文字コードへの依存を無くすのでこちらの方が望ましいと思う。 ありがとうございます。早速試してみます! みなさんから色々とご意見を頂きすごく役立っています。 まだ、勉強を始めたばかりで解からないことばかりなので、また色々と質問させて頂きます。 本当に有難うございました。 |