long型转成bytes

今天刚好有人问VB的Long转换成Bytes,问下面代码是什么意思

Bytes = (Number And &H7F000000) \ &H1000000 Or (((Number And &H80000000) <> 0) And &H80)

实际上各种语言计算位的方式都是基本一致的。要理解这些什么意思,关键得能把这些变量和16进制数要有位的概念。

1、VB中long是32位,如果就是4个字节,一个字节的二进制是8位(1111 1111),如果是其他语言也一样,看变量占几个字节,然后转成位的方式

2、H7F000000二进制是01111111 00000000 00000000 00000000 ,为了防止溢出,最高位设置成0。and操作后,就剩最高位的8位了。但第8位是不准确的。

3、H1000000二进制是1 00000000 00000000 00000000 ,除法相当于移位,也就是剩下最高位8位

4、&H80000000二进制10000000 00000000 00000000 00000000,and操作是检测最高位是0还是1

5、&H80二进制是10000000,and操作检测8位中最高位

6、(Number And &H7F000000) \ &H1000000是求出最高8位。

7、(((Number And &H80000000) <> 0) And &H80)后面这部分总体来说就是最高位如果是0则结果0,如果最高位是1,则结果是1

8、两组or以下,结果就是long型的最高8位数,为什么or一下,还记得前面说的第8位不准确吧


这是求最高8位的,其他低位的3个字节也可以同理,单另外3个字节中每个字节的第8位就不用做特殊处理了,也就是最高位的字节要做特殊处理

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值