vb6-VB中long型转Bytes型代码求解

问题描述

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

vb6-VB中long型转Bytes型代码求解的相关文章

PHP中把有符号整型转换为无符号整型方法

  这篇文章主要介绍了PHP中把有符号整型转换为无符号整型方法,转换的方法很简单,本文直接给出转换方法,需要的朋友可以参考下 在一个短地址项目中,根据六位字符与ID的相互映射的算法,当ID超过2147483647的时候,六位字符的短地址映射的ID变成有符号的整型. 代码如下: ID > 六位字符 >映射ID ID: 2147483644 > TfffVQ > 2147483644 ID: 2147483645 > efffVQ > 2147483645 ID: 2147

[求救]为什么在C#中SqlDbType.Ntext或text型,在传递保存几百个文字内容时会将内容截取??!!!

问题描述 [求救]为什么在C#中SqlDbType.Ntext或text型,在传递保存几百个文字内容时会将内容截取??!!!存储过程本身没有任何错误,设断点调试时,在到了给ntext或text参数赋值时,此时要传入的内容都是完整的,但执行完SP后就发现被截掉了一部分.为什么啊?!!!用asp执行了相同的SP没有任何问题,真是超级郁闷..... 解决方案 解决方案二:快来救命啊解决方案三:Help!!!!解决方案四:是不是传如的字符串内有特殊字符?如果没有,不应该这样的解决方案五:求救!!!!解决

Java:将字符串中的数字转换成整型

在C语言中,将字符串中的数字转换为整型的方法是是利用atoi这个函数.在Java中,我们可以利用parseInt方法来实现,具体代码如下: public class HelloWorld { public static void main(String[] args){ String str = "12345"; int c = Integer.parseInt(str); //将字符串转换为整型数 int a = c + 100 ; System.out.println(a); }

当数据库中字段设计为smalint或者tinyint后,程序中要求字段为枚举型,应该怎么设置

我们知道枚举默认和int类型是可以直接强转换的,并不会出现任何错误,但对于其它类型来说, 有可能会有问题,比如,一个enum类型, 如下声明会有错误 enum ProductColumns {   ProductId=1, . . . Status=4294967297, } OK,这样的话,程序会报错,因为它已经超过了int型的范围(int型其实就是Int32结构体类型,32表示最大存储的整型范围是2的32次方) 修改程序为 enum ProductColumns:long { } 让它继承l

VB中利用MapX创建用户定制工具

摘要 本文介绍了VB中如何利用MapX创建用户定制地图工具,详细地说明了整个创建过程,以及在创建定制工具的过程中所使用的关键方法. 1.前言 随着地理信息系统的发展,国内外已出现了不少GIS(地理信息系统)软件,其中MapX是MapInfo公司的ActiveX控件产品.由于它是一种基于Windows操作系统的标准控件,因而MapX4.0支持绝大多数标准的可视化开发环境,如:VisualBasic,Delphi,PowerBuilder,VisualC++等面向对象语言,而且可以使用Lotus s

ASP进阶:VB中的模块,类,ActiveX与API的使用

active|activex 这几天搞了点c/s结构的程序设计, 由于ASP用得比较熟练,所以VB6.0自然成为我首选的开发工具. 在学习过程中,我结合自己的经验总结下VB中的一些高级应用,并且体会这种应用给我们所带来的好处. 一.模块 (Module) 在VB中,模块会优先执行,其实说白了,模块就象是全局的过程和函数调用.这是初步的提高代码可复用性的途径.我想有经验的ASP(VBSCRIPT,以后都只用VBScript来写Asp程序)程序员都用过<!--#Include file="&q

浅谈crystal reports在VB中的调用

环境:VB6.0,crystal reports 9.0 在一个项目中用到了crystal reports,总结一些经验和教训. 以做一张单据的套打为例. 单据包括单据头,单据体.单据头和单据体可能是一对多的关系.并且他们分别存在于两张表当中,用字段FID做关联.要求能够动态的传入参数FID,显示不同的结果. 首先,打开crystal reports,做好一张单据的模板rpt.制作报表的方法有很多,比如:用它的图形化工具直接建立几个表之间的连接,然后将想要显示的字段托到报表当中:或是调用一个已经

在VB中使用水晶报表的一种简易编程方法

编程|水晶报表       水晶报表(Crystal Report)的业内最专业.功能最强的报表系统,它除了强大的报表功能外,最大的优势是实现了与绝大多数流行开发工具的集成和接口.在VS.Net平台做过报表开发的程序员,一定都对水晶报表强大.高效.集成等特性留下了深刻印象.除了开发新程序外,在工作中我们常需要接触到很多较早的软件系统报表功能升级的需求,如果能结合水晶报表这一强大的工具,往往能事半功倍.       VB是以前流行的数据库开发平台,用其开发的C/S系统在社会上有非常大的保有量,但V

走近VB.Net(一),VB中的族,类,对象(摘录部分MSDN)

对象 走近VB.Net(一),VB中的族,类,对象 VB.Net是面向对象(object-oriented)的,又称为物件(object)导向(oriented).在VB.Net中所有的变量类型都是基于object,而不是VariantDim x As Variant 会被升级为 Dim as object.如果你不理解对象,暂时你可以把他理解为一段数据,他是实际存在于内存的,所以对象以称为实例(instance)而类(class)就是类别,他定义一群对象,是一个对象的群体,并定义方法成员.所以