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


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0306
ぽーくpoke命令で・・・4解決


ぽーく

リンク

2008/3/6(Thu) 00:46:47|NO.13944

pokeでアドレス0x0136(16進数)を書き換えるときに
poke a,$136,0 ←のように16進数で指定する場合は[$]を付けますよね。

そこで、変数int型xに[136]が入っていてpokeで変数xを使いたいのですが
poke a,x,0 だとxは10進数で136byte目を書き換えてしまいますよね。
これを136を16進数のままで指定するにはどうしたら良いですか?

[136]を10進数に変換しないで実現したいのですが・・・



この記事に返信する


f

リンク

2008/3/6(Thu) 00:54:53|NO.13945

よくわからんが、

x = $136

でいかんの?



ANTARES

リンク

2008/3/6(Thu) 01:33:37|NO.13953

>そこで、変数int型xに[136]が入っていてpokeで変数xを使いたいのですが
>poke a,x,0 だとxは10進数で136byte目を書き換えてしまいますよね。
>これを136を16進数のままで指定するにはどうしたら良いですか?
>
>[136]を10進数に変換しないで実現したいのですが・・・
 不可能です。

 10進と16進の違いは数値の表現方法の違いであって、
数値そのものに10進と16進の違いがあるわけではありません。

したがって、既に変数に入っている値は固定であり、
その10進表現を16進表現と見なして別の数値に変換することはできますが、
それをしないでぽーくさんのやりたいことを実現する方法はありません。

 典型的な実現方法は、
1 xの値を10進文字列に変換する s=str(x)
2 結果を16進文字列とみなして数値に変換する x=int("$"+s)

 2つをまとめて
x=int("$"+str(x))
とすることもできます。

 xを10のべき乗で割って16のべき乗をかけるなど、ほかにも方法はありますが、
いずれにせよ、「xを10進表現に変換または分解し、16進表現と見なして変換または計算する」
という基本は変わりません。



hiro

リンク

2008/3/6(Thu) 01:38:55|NO.13955

変数や定数の+での連結は、最初に指定した型が優先されるようですので、
整数型として最初に、「0 + 」を指定して、整数型としました。
次に文字列「$ + x」を指定して整数変換をしています。
poke a, 0 + strf("$%d", x) , 0

ただし、このような使い方は普通しません。 本当に必要かどうか考慮してみるのもいいかと思います。



ぽーく

リンク

2008/3/6(Thu) 08:33:41|NO.13964

みなさん、ありがとうございました。
素直に10進数に変換する方法でやることにしました。



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