|
2017/03/09(Thu) 10:44:43 編集(投稿者)
■No83159 (小僧 さん) に返信 > integer型をbyte型に変換したいのですが > Dim hhh As Integer = 500 > Dim dd As Byte = CByte(hhh) > のようにするとオーバーフローして、エラーとなります。
そうとも限らないですよ。VB のコンパイルモードを変更すれば オーバーフローチェックを省略することもできますし。 ※ILレベルでは、0xb4(conv.ovf.u1)の代わりに 0xd2(conv.u1)が使われます。
ちなみにオーバーフローチェックを省略した場合、 上記の dd には 244 が代入されます。 500 は &H000001F4 244 は &H000000F4
> これを自動でやってくれるコマンドがあれば > 教えてください。
私ならこう書きます。
Dim dd As Byte = CByte(Math.Max(0, Math.Min(hhh, 255)))
|