扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
o这是因为有字节对齐的问题。每一个变量的首地址必须是它所占字节长度的倍数。
成都创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站建设、做网站、铅山网络推广、成都微信小程序、铅山网络营销、铅山企业策划、铅山品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联为所有大学生创业者提供铅山建站搭建服务,24小时服务热线:028-86922220,官方网址:www.cdcxhl.com
比如int32长度是4,那么它的首地址只能取0,4,8,12……
下面的图形象的表示了MSG在内存中的储存情况:
OOXXOOOO
第一个和第二个O表示两个BYTE类型的数据,两个X表示空地址,里面什么也没放。后面四个OOOO便是一个int32类型数据也就是Code。加起来总共占了8个字节的内存
1.基本数据类型
基本数据类型是由系统定义的数据类型,包括数值数据类型、字节型、逻辑型、日期型、字符型、字符串类型和对象类型。
(1)数值(Numeric)数据类型
数值数据类型分别是:Integer、Long、Single、Double和Decimal,它们的表数范围、所占字节数如表3-1所列。
表3-1 VB .NET的数值数据类型
类型 数值范围 字节数
Integer -2147483648 ~ 2147483647 4
Long 9223372036854775808 ~ 9223372036854775807 8
Short -32768 ~ 32767 2
Single -3.402823E38 ~-1.401298E-451.041298E-45 ~ 3.402823E38 4
Double -1.7976313486231E308 ~ 4.94065645841247E-324
4.94065645841247E-324 ~ 1.79769313486231E308 8
Decimal -7922816251426433759354 ~ 79228162514264337593543950335
绝对值最小的非0数为:+/-0.000000000000000000000000001 12
(2)字节(Byte)数据类型
字节类型用以存储二进制数据,占1字节,其数值范围在0~255的整数,是一个无符号的数据类型。在进行ANSI与Unicode格式转换时,若数据是用Byte格式存储的,就可以保留其原值;若数据是用String格式存储的则可能会遭到破坏。在读文件、写文件、调用DIL、调用对象的方法和属性时,VB .NET都会自动在ANSI和Unicode之间进行转换。注意,除了一元减号外,所有对整数起作用的运算符都可用于Byte类型的数据。
(3)逻辑(Boolean)数据类型
逻辑类型数据占2个字节,主要用来存放逻辑判断的结果,取值为逻辑值,即True(真)或False(假)。当将其他数据类型转换为逻辑数据时,非0转换为True,0转换为False。
(4)日期(Date)数据类型
Date类型用来保存日期和时间数据,占8字节,取值范围为1-1-0001 0:00:00~12-31-9999 23:59:59的日期时间,即日期范围为公元1年1月1日~9999年12月31日,时间范围为0:00:00~23:59:59。Date数据要求在日期时间值前后加上“#”,日期时间值的格式为m-d-yyyy hh : mm : ss(月-日-年时:分:秒)。例如:#12-3-2003 10:20:18#。
(5)字符(Char)型
字符型数据占2字节,取值范围0~65535,代表一个Unicode字符。Char数据类型与数值类型之间不允许隐式转换,但可使用系统的Asc()或AscW()将Char数据显示转换为数值数据。
(6)字符串(String)数据类型
String类型用于保存字符串数据,一个字符占1字节,一个汉字占2字节,字符串最大长度可达20亿(231)个Unicode字符。字符串前后要加上" "。例如:"Good morning !"、"程序"。
(7)对象(Object)数据类型
Object类型用来存储应用程序中的对象,可存放任何类型的数据,占4字节。
2.自定义数据类型
用户自定义类型在Visual Basic.NET中称为“结构”(Structure),包含一个或多个不同种类的数据类型,视自定义类型的成员来决定存放的数据,关键字为System.ValueType。用户自定义类型数据占用的内存空间是其包含的所有数据类型所占用内存空间的总和。
摘自帮助文档,我也不是很理解
估计只有在Visual Basic 文件输入和输出才有用
示例
Visual Basic 复制代码
Structure Person
Public ID As Integer
Public MonthlySalary As Decimal
Public LastReviewDate As Long
VBFixedString(15) Public FirstName As String
VBFixedString(15) Public LastName As String
VBFixedString(15) Public Title As String
VBFixedString(150) Public ReviewComments As String
End Structure
注意
VBFixedStringAttribute 是信息性的属性,不能用于将可变长度字符串转换为固定长度字符串。此属性的作用是修改那些识别 VBFixedStringAttribute 的方法或 API 调用(如 Len 和 FilePut 函数)使用结构中的字符串以及非局部变量的方式。请记住,此属性不会更改字符串本身的实际长度。
备注
默认情况下,Visual Basic 字符串为可变长度的字符串。在使用 Visual Basic 文件输入和输出函数(如需要固定长度字符串的 FileGet 和 FilePut)时,该属性非常有用。
注意
VBFixedStringAttribute 属性以字节而不是字符为单位指定字符串长度。
摘自帮助文档,我也不是很理解
估计只有在Visual Basic 文件输入和输出才有用
示例
Visual Basic 复制代码
Structure Person
Public ID As Integer
Public MonthlySalary As Decimal
Public LastReviewDate As Long
VBFixedString(15) Public FirstName As String
VBFixedString(15) Public LastName As String
VBFixedString(15) Public Title As String
VBFixedString(150) Public ReviewComments As String
End Structure
注意
VBFixedStringAttribute 是信息性的属性,不能用于将可变长度字符串转换为固定长度字符串。此属性的作用是修改那些识别 VBFixedStringAttribute 的方法或 API 调用(如 Len 和 FilePut 函数)使用结构中的字符串以及非局部变量的方式。请记住,此属性不会更改字符串本身的实际长度。
备注
默认情况下,Visual Basic 字符串为可变长度的字符串。在使用 Visual Basic 文件输入和输出函数(如需要固定长度字符串的 FileGet 和 FilePut)时,该属性非常有用。
注意
VBFixedStringAttribute 属性以字节而不是字符为单位指定字符串长度。
→
正确的方法如下:
Visual Basic 复制代码
Structure Person
Public ID As Integer
Public MonthlySalary As Decimal
Public LastReviewDate As Long
VBFixedString(15) Public FirstName As String
VBFixedString(15) Public LastName As String
VBFixedString(15) Public Title As String
VBFixedString(150) Public ReviewComments As String
End Structure
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流