VB中long型转Bytes型代码求解

请问下面这段代码怎么分析啊?看了半天没看懂!
Bytes = (Number And &H7F000000) \ &H1000000 Or (((Number And &H80000000) <> 0) And &H80)

1个回答

vb中long是32位,如果2进制表示就是4个字节(1111 1111),
H7F000000二进制是01111111 00000000 00000000 00000000 ,为了防止溢出,最高位设置成0。and操作后,就剩最高位的8位了。但第8位是不准确的。
H1000000二进制是1 00000000 00000000 00000000 ,除法相当于移位,也就是剩下最高位8位
&H80000000二进制10000000 00000000 00000000 00000000,and操作是检测最高位是0还是1
&H80二进制是10000000,and操作检测8位中最高位

(Number And &H7F000000) \ &H1000000是求出最高8位。
(((Number And &H80000000) <> 0) And &H80)后面这部分总体来说就是最高位如果是0则结果0,如果最高位是1,则结果是1
两组or以下,结果就是long型的最高8位数,为什么or一下,还记得前面说的第8位不准确吧

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问