オーバーフロー対策法は?


おお鍋  2003-05-11 07:05:47  No: 77905

VBscriptで、10進数をオーバーフローしないように16進数に変換して表示させるようなことをしたいのですが、対策法に困っています。
いいアイディアをご教授ください。
以下が現在のオーバーフローするスクリプトです。
stringU = 4826531840
stringH = Hex(stringU)
response.write "stringU =" & stringU
response.write "stringH =" & stringH
やはり、下位から4ビットづつ変換していくしかないでしょうか?


Say  2003-05-11 09:42:53  No: 77906

>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)

みたいなかんじで。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加