Tema: Re: VBScript: Overflow. kur klaida?
Autorius: Laimis
Data: 2010-10-15 17:49:27
Tomis rašė:
> Nugi parasiau.
>
> tarkim turim kintamojo reiksme 0xEE882244
> man reikia istraukti vyriausius baitus:
> var1 = 0xEE
> var2 = 0x88
>
> O dalyba.... neradau kito budo kaip vbscripte tuos baitus istraukt

Na, teisingai, dalyba reikalinga; kažkaip man švietė, kad VBS turi shift 
operatorių...
Yra net'e tų gatavų funkcijų ((L|R)Shift ir pan.), tačiau jos kiek 
painios, nes derinasi prie neigiamų skaičių, koks yra ir šis pavyzdys 
(klaida, beje, kaip tik tos pačios, signed long overflow, padermės)

Neitin optimalu, bet tiesmukiška, paprasta:

Function ToByte(lVal)
     ToByte = CByte("&H" & Left(Hex(lVal), 2))
End Function


SmartTags("LevelMin") = ToByte(SmartTags("Status") And &hFF000000)
SmartTags("LevelMax") = ToByte(SmartTags("Status") And &hFF0000)