VBscriptで、10進数をオーバーフローしないように16進数に変換して表示させるようなことをしたいのですが、対策法に困っています。
いいアイディアをご教授ください。
以下が現在のオーバーフローするスクリプトです。
stringU = 4826531840
stringH = Hex(stringU)
response.write "stringU =" & stringU
response.write "stringH =" & stringH
やはり、下位から4ビットづつ変換していくしかないでしょうか?
>Hex(stringU)
HexはLong型をとりますので、内部でstringUを
Longにキャストしようとしてオーバーフローします。
Hexに食わせる前に分割する必要があります。
>やはり、下位から4ビットづつ変換していくしかないでしょうか?
16bitずつにしたほうがちょっとだけ効率的でしょう。
bufH = Int(stringU / 65536)
bufL = stringU - bufH * 65536
HexString = Hex(bufH) & Right("0000" & Hex(bufL) , 4)
みたいなかんじで。
ツイート | ![]() |