Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Bittisiirto oikealle

Milu [21.11.2015 00:47:38]

#

Tarvitsisin hieman apua koskien VB6

Eli jos VB net sobellutuksessa on bitin siirto oikealle esimerkiksi näin, miten voin toteuttaa sen VB6:lla?

int_5 = &H3E700
array(4) = CByte((int_5 >> 12)
array(5) = CByte((int_5 >> 4)

Onko silloin array(4) = &h70 ja array(5) = &h3E

Onko tuohon VB6 mitään valmista käskyä toteuttaa sama asia, vai miten se pitäisi tehdä.

Mod. lisäsi kooditagit!

Grez [21.11.2015 06:28:48]

#

VB6:ssa vastaavat käskyt on:

array(4) = (int_5 \ &H1000) And &HFF
array(5) = (int_5 \ &H10) And &HFF

Esimerkissäsi array(4) = &H3E ja array(5) = &H70

Mod. lisäsi kooditagit!

Milu [21.11.2015 10:59:08]

#

Ok, kiitos paljon :)

Onko tuo ">> 12" merkki, että bittijonon oikealta otetaan 12 bittiä ja siirretään vasemalle alkuun ? manuaalisesti kun testailin, mulla meni sit toi väärin.

Sitten tämä vielä.

Dim b1 As Byte = CByte((int_5 >> 16))
Dim b2 As Byte = CByte((int_5 >> 8))
Dim b3 As Byte = CByte((int_5 And 255))

Mod. lisäsi kooditagit!

Grez [21.11.2015 11:14:22]

#

>> 12 tarkoittaa että siirretään 12 bitin verran oikealle. Eli siis käytännössä jaetaan luvulla 2^12 eli 4096 (eli heksana 1000). 32-bittisen luvun tapauksessa siis otetaan 20 (32-12) enitenmerkitsevää bittiä.

Noi olis VB6:lla

Dim b1 As Byte
b1 = (int_5 \ &H10000) And &HFF
Dim b2 As Byte
b2 = (int_5 \ &H100) And &HFF
Dim b3 As Byte
b3 = int_5 And 255

Milu [21.11.2015 11:31:58]

#

Kiitoksia vielä tosi paljon, homma jatkuu taas..

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta