问题描述
- VB中long型转Bytes型代码求解
- 请问下面这段代码怎么分析啊?看了半天没看懂!
Bytes = (Number And &H7F000000) &H1000000 Or (((Number And &H80000000) <> 0) And &H80)
解决方案
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位不准确吧
时间: 2025-01-13 17:49:57