Page 877 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼Long型値の上位ワード、下位ワードの切り... エトランゼ 03/3/6(木) 22:04 ┣Re:Long型値の上位ワード、下位ワードの切り... よろずや 03/3/6(木) 22:30 ┗Re:Long型値の上位ワード、下位ワードの切... hira 03/3/16(日) 4:39 ─────────────────────────────────────── ■題名 : Long型値の上位ワード、下位ワードの切り... ■名前 : エトランゼ ■日付 : 03/3/6(木) 22:04 -------------------------------------------------------------------------
500000というlong型の値をinteger型の変数2つに入れたいのですが dim lng as Long dim iH as Integer,iL as Integer iL = CInt(lng And &HFFFF&) iH = CInt((lng \ (2^16)) And &HFFFF&) とするとオーバーフローします。なにかいい手は無いでしょうか? |
▼エトランゼ さん: >500000というlong型の値をinteger型の変数2つに入れたいのですが > >dim lng as Long >dim iH as Integer,iL as Integer >iL = CInt(lng And &HFFFF&) >iH = CInt((lng \ (2^16)) And &HFFFF&) > >とするとオーバーフローします。なにかいい手は無いでしょうか? If lng And &H8000& Then iL = &HFFFF8000 Or lng And &H7FFF& Else iL = lng And &H7FFF& End If iH = lng \ &H10000 |
▼エトランゼ さん: >500000というlong型の値をinteger型の変数2つに入れたいのですが > >dim lng as Long >dim iH as Integer,iL as Integer >iL = CInt(lng And &HFFFF&) >iH = CInt((lng \ (2^16)) And &HFFFF&) > >とするとオーバーフローします。なにかいい手は無いでしょうか? 準備が面倒な上、推奨されてはいませんが、こんな手もあります。 Type DWord d As Long End Type Type Word2 l As Integer h As Integer End Type Sub test() Dim lng As Long Dim iH As Integer, iL As Integer Dim stL As DWord Dim stI As Word2 lng = 500000 stL.d = lng LSet stI = stL iH = stI.h iL = stI.l Debug.Print iH, iL End Sub |