vb将单精度转换为4个字符串
vb强制类型转换用法

vb强制类型转换用法VB强制类型转换用法在VB中,强制类型转换是将一种数据类型转换为另一种数据类型的过程。
这种转换可以在不同的数据类型之间进行,例如将整数转换为浮点数,或将字符串转换为数字。
强制类型转换在VB中非常常见,因为它可以帮助我们在不同的数据类型之间进行转换,从而使我们的程序更加灵活和高效。
VB中的强制类型转换有两种方式:显式转换和隐式转换。
显式转换是通过使用转换函数或运算符来进行的,而隐式转换是在编译时自动进行的。
下面我们将详细介绍这两种转换方式的用法和注意事项。
显式转换在VB中,显式转换是通过使用转换函数或运算符来进行的。
以下是一些常用的转换函数和运算符:1. CInt:将一个表达式转换为整数类型。
2. CDbl:将一个表达式转换为双精度浮点数类型。
3. CStr:将一个表达式转换为字符串类型。
4. CLng:将一个表达式转换为长整数类型。
5. CType:将一个表达式转换为指定的数据类型。
例如,如果我们想将一个字符串转换为整数类型,可以使用CInt 函数:Dim str As String = "123"Dim num As Integer = CInt(str)在这个例子中,我们首先定义了一个字符串变量str,它的值为"123"。
然后我们使用CInt函数将这个字符串转换为整数类型,并将结果存储在一个整数变量num中。
除了转换函数之外,VB还提供了一些运算符来进行显式转换。
以下是一些常用的运算符:1. +:将一个表达式转换为正数。
2. -:将一个表达式转换为负数。
3. *:将一个表达式转换为双精度浮点数类型。
4. /:将一个表达式转换为单精度浮点数类型。
例如,如果我们想将一个整数转换为双精度浮点数类型,可以使用*运算符:Dim num As Integer = 123Dim dbl As Double = num *在这个例子中,我们首先定义了一个整数变量num,它的值为123。
VB中的数据类型

Dim str1 as string * 8
2. 数值:分为整数和实数两类。 (1)整数 整型数在机器内部以2字节二进制形式表示。 VB中用±n[%]来表示整数,其中%为整数 的类型符,可以省略。 如-123%、123%都表示整数,可表示数值 范围为-32768~+32767; 长整型数在计算机中用4个字节存储, & 可 表 示 数 值 范 围 为 -2147483648 ~ +2147483647。
VB中的数据类型
Vb的数据类型分为: 基本数据类型 自定义数据类型
整型Integer %
整 数 长整型Long & 字节型Byte 单精度型Single ! 实数
VB 基 本 数 据 类 型
数值型
双精度型Double #
货币型 currency @
字符串型String $
定长 变长
精确到小数点后4位,
为了显式地指明常数类型,可以在常数后面加上类型说明符: % 整型 # 双精度浮点数 & 长整型 @ 货币型 ! 单精度浮点数 $ 字符串型
2. 符号常量: 3. 用固定的符号来表示常量,代替数值或字符串
[Private|Public] const 常量名[As 类型]=表达式
例: Const NAME As String ="LiLin” Const NUM As Integer= 4450 Const Pi!=3.14159 Const MAX As Integer=&O155 说明:可以在常量名后面加上类型说明符; 定义符号常量后,定义变量时要注意。 Const Num As Integer = 45 Num!、Num#、Num%等,不能再做为常量名或变 量名。 符号常量一般用大写字母定义以示区别。
VB数据类型转换函数

#1899/12/30#
2. Hour , Minute , Second 函数:取出时,分,或秒 [格式 ]: P=Hour(X) 取出 X"时" 部分的数值 P=Minute(X) 取出 X"分" 部分的数值 P=Second(X) 取出 X"秒" 部分的数值 [说明 ]: Hour 的返回值是 0---23 之间
5.Date,Time,Now 函数:读取系统的日期时间 [格式 ]: P=Date() P=Time() P=Now() [说明 ]:这三个函数都无参数 [例 ]: 若当前时间为 2003 年 8 月 29 日晚上 19 点 26 分 45 秒,则 P=Now() 结果为: P=2003-08-29 19:26:45
转换为货币类值 转换为日前类型的值
转换为双精度值 转换为整数值
转换为长整型的值 转换为单精度的值 转换为字符串值
数值转换为字符串 字符串转换为数值
Abs(nmb) Atn(nmb) Cos(nmb) Exp(nmb) Int(nmb) 部份 8.4-->9 Fix(nmb) 8.4-->8 Formatpercent( 表达式 ) Hex(nmb) Log(nmb) Oct(nmb) Rnd 的随机数 Sgn(nmb) Sin(nmb) Sqr(nmb) Tan(nmb) Asc(string) Chr(charcode) Instr(string,searchstr) string 是字符串, searchstr 是被搜索的字符串 InstrRev(string,searchstr) Lcase(var) Left(string,nmb) 字符串 Len(string) Ltrim(string) Filter(inputstrings,value) 符串组, value 是在数组中寻找的字符 Rtrim(string) Trim(string) Mid(string,start,len)
vb 提供的标准数据类型

vb 提供的标准数据类型VB 提供的标准数据类型。
在 VB 编程中,数据类型是非常重要的概念,它定义了变量可以存储的数据的类型和范围。
VB 提供了一系列标准数据类型,包括整型、浮点型、字符型等,本文将对这些标准数据类型进行详细介绍。
1. 整型数据类型。
整型数据类型用于存储整数,包括正整数、负整数和零。
在 VB 中,整型数据类型包括 Byte、Short、Integer 和 Long 四种类型。
Byte,Byte 类型用于存储 8 位的无符号整数,取值范围为 0 到 255。
Short,Short 类型用于存储 16 位的有符号整数,取值范围为 -32,768 到 32,767。
Integer,Integer 类型用于存储 32 位的有符号整数,取值范围为 -2,147,483,648到 2,147,483,647。
Long,Long 类型用于存储 64 位的有符号整数,取值范围为 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807。
2. 浮点型数据类型。
浮点型数据类型用于存储小数,包括单精度浮点数和双精度浮点数两种类型。
Single,Single 类型用于存储 32 位的单精度浮点数,可以表示大约 7 位的有效数字。
Double,Double 类型用于存储 64 位的双精度浮点数,可以表示大约 15 位的有效数字。
3. 字符型数据类型。
字符型数据类型用于存储单个字符,包括 ASCII 字符和 Unicode 字符两种类型。
Char,Char 类型用于存储单个 Unicode 字符,占用 2 个字节的存储空间。
String,String 类型用于存储字符串,可以包含多个字符。
4. 其他数据类型。
除了上述的基本数据类型外,VB 还提供了一些其他的数据类型,包括布尔型、日期型和对象型。
Boolean,Boolean 类型用于存储布尔值,即 True 或 False。
VB复习题

答案:A
第8题 (1.0分) 题号:263
函数Len(Str(Val("123.4")))的值为().
A:11
B:5
C:6
D:8
答案:C
第9题 (1.0分) 题号:809
要使文本框中的文本显示掩码(密码)符,在属性设置时,首先必
须设置()属性为False.
A:Text
答案:N
第8题 (1.0分) 题号:346
在Visual Basic 中Dim a ,b,c as integer和
Dim a as integer, b as integer,c as integer相同.
答案:Y
第9题 (1.0分) 题号:364
组合框兼有文本框和列表框两者的功能,用户可以通过键入文
标准工具箱中的控件().
A:数目是固定不变的
B:数目可以增加或减少
C:包含了VisualBasic所有控件
D:在窗体建立对象时不一定被使用
答案:B
第2题 (1.0分) 题号:264
函数Ucase(Mid("visualbasic",8,8))的值为().
A:visual
B:basic
答案:BCD
第2题 (2.0分) 题号:283
要选择列表框List1的第6项,可以使用语句()。
A:List1.Selected(6)=True
B:List1.Selected(5)=True
C:List1.ListIndex=5
D:List1.Selected=5
答案:BC
A = x
x = y
VB三种程序结构VisualBasic语言作为结构化程序设计语言提供

3、
当逻辑型赋值给数值型时,True转换为-1,False转
换为0;反之,当数值型赋给逻辑型时,非0转换为True,
0转换为False.
2、MsgBox函数:向用户显示信息(输出
MsgBox语句: MsgBox (提示内容 [,答复按钮+图标][,标题]) MsgBox函数: Dim x As Integer X=MsgBox(提示内容 [,答复按钮+图标][,标题])
? Round(3.89456,3) 结果:3.895 说明:☆ 在三角函数中,以弧度表示;sqr的自变量不能是负数
☆ Rnd函数返回小于1,大于等于0的单精度随机数。 VB用于产生随机数的公式取决于称为种子(seed)的初始值。
默认情况下,每次运行一个应用程序,VB提供一相同的种子, 即Rnd产生相同序列的随机数。为了每次运行时,产生不同序 列的随机数,可执行Randomize语句,格式如下:
•答复按钮+图标:确定在消息框中按钮 的数目和类型,以及图标的类型。
•标题:显示在消息框标题栏上的文本。
"按钮"设置值及意义
分组 内部常数
VbOkOnly VbOkCancel 按 VbAboutRetryIgnore 钮 VbYesNoCancel 数 VbYesNo 目 VbRetryCancel
对 象 可 以 是 窗 体 ( Form ) 、 图 形 框 (PictureBox) 或 打 印 机 (Printer)。如果省略了对象,则在窗体上输出。 说明:① 表达式:可选项。可以是一个或多个表达式。当有多个表达式 时,要用分隔符(逗号、分号)隔开。当表达式缺省时,则屏幕显 示一个空行。 ② 输出格式分为标准输出格式和紧凑输出格式。 标准输出格式:以14个字符宽度划分为一个区段,每个数据项占一个区 段的位置。(数据项之间用逗号隔开) 紧凑输出格式:对于数值型数据,前面有一个符号位,后面有一个空格; 对于每个字符串,各个数据项之间没有间隔。(各数据项之间用分 号或空格作为分隔符)
VB中的数据类型

VB中的数据类型
1.Boolean 布尔型,这种类型,只有真、假(即true or false)两个值,它占⽤两个字节。
2.Byte 字节型他占⽤⼀个字节,他的范围是0—255
3.Integer 整型它占⽤两个字节,通常⽤%来表⽰,例a%;它占⽤2个字节(C语⾔中为4个字节),它的范围是0----32768/32767
4.Long 长整型它占⽤4个字节,它的简写符号是&,它的范围是-2147483648到2147483647。
对于整型和长整型,我们通常会选⽤长整型,尽管长整型⽐较⼤,但是相对于整型会⽐较快,因为CPU⼀般是32位的,长整型可以⼀次把数据存储到寄存器⾥或CPU⾥⾯,还有长整型的兼容性⽐较好。
5.Single 单精度浮点 4个字节。
范围⽐较⼤,但是精度很⼩,在科学计算时,不⽤改精度,它的符号是!
6.double 双精度浮点 8个字节,符号式#,它的精度远远⼤于单精度浮点。
7.String 字符串 a.可变长字符串,⽤于读取⽂件,⽂本查找等。
B.定长字符长
8.Date ⽇期形式是 #…………#,如20011年11⽉11⽇可表⽰为 #2011/11/11#
9. Currency @表⽰符
10. User Defined
11.Variant 可变类型在VB下,变量可以不声明,不同于以上类型,赋值后,可以对他进⾏其他类型的赋值,例如原先是⼀个字符串,后来再给他赋为⽇期。
Variant类型的格式:
类型变量(如整型)相应数据、地址
Variant的缺点是占⽤内存较⼤,速度慢;⽅便之处是使⽤灵活
VB中的数据类型并不是孤⽴的,他们之间可以⽤转换函数来相互转换。
VB常用函数大全(数学函数)

P=Replace(X,S,R)
[说明]:将字符串X中的字符串S替换为字符串R,然后返回。
[范例]:
X=”VB is very good”
P=Replace(X,good,nice)
输出结果为:P=”VB is very nice”
5. StrReverse:反转字符串
现在的编程软件像VB,C++等,大多自带功能很强的函数库,可以很省力得完成各种功能。很多时候,想不起来实现某个功能的函数或函数格式,导致编程大费周折。作为一个编程人员,我对此深有体会。因此,特地准备了几期VB常用函数的介绍,供大家学习或参考。有说的不当之处,也欢迎在本网站的论坛中提出,大家学习。
(2) 若日期D大于当月的日数,则日期从当月的日数起,向后推算D-当月日数;若小于1,则日期从1日起向前推算1-D日。
[范例]:
P=DateSerial(2000,02,02)
则结果为P=2000/02/02
4.TimeSerial函数:合并时,分,秒成为时间
[格式]:P=TimeSerial(H,M,S)
9. Tan(N) 正切函数
例:Tan(0) 结果:0
10.Atn(N) 反切函数
例:Atn(0) 结果:0
[注意]:在三角函数中,以弧度表示。
(一)字符串类函数:
1. ASC(X),Chr(X):转换字符字符码
[格式]:
P=Asc(X) 返回字符串X的第一个字符的字符码
2. Int(X),Fix(X):取X的整数值
[格式]:
P=Int(X) ' 取<=X的最大整数值
P=Fix(X) ' 取X的整数部分,直接去掉小数
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Option ExplicitPrivate Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)Private Sub cmdSinHex_Click()Text3 = ""Dim i As IntegerDim hexData As StringDim a As SingleDim Buffer(3) As Bytea = Val(Text1)CopyMemory Buffer(0), a, 4For i = 0 To 3If Len(Hex(Buffer(i))) = 1 ThenhexData = "0" & Hex(Buffer(i)) + hexDataElsehexData = Hex(Buffer(i)) + hexDataEnd IfNextText2 = hexDataFor i = 1 To Len(hexData) Step 2Text3 = Text3 & ChrW(Val("&H" & Mid(hexData, i, 2))) '& " "NextEnd SubPrivate Sub Form_Load()Text1 = ""Text2 = ""Text3 = ""End SubVB串口通信中经常会遇到10进制浮点数转为多字节Byte数据类型的情况,以及在接收后需转为10进制浮点数需求。
VB有专门的API函数CopyMemory能处理2-10进制浮点数转换和10-2进制浮点数转换。
下列代码演示了10进制Single(单精度浮点型转为16进制字符显示的浮点数和其相反运算:Option ExplicitPrivate Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)Private Sub BinToSin_Click()Dim sinStr As StringDim sinSj As SingleDim Buffer(3) As ByteDim i As IntegersinStr = Text2For i = 1 To Len(Text2) Step 2Buffer((7 - i) / 2) = Val("&H" & Mid(sinStr, i, 2))NextCopyMemory ByVal VarPtr(sinSj), ByVal VarPtr(Buffer(0)), 4Text3 = sinSjEnd SubPrivate Sub SinToBin_Click()Dim i As IntegerDim hexData As StringDim a As SingleDim Buffer(3) As Bytea = Val(Text1)CopyMemory Buffer(0), a, 4For i = 0 To 3If Len(Hex(Buffer(i))) = 1 ThenhexData = "0" & Hex(Buffer(i)) + hexDataElsehexData = Hex(Buffer(i)) + hexDataEnd IfNextText2 = hexDataEnd Sub下列代码演示了10进制Double(双精度浮点型)转为16进制字符显示的浮点数和其相反运算:Option ExplicitPrivate Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)Private Sub cmdDoubHex_Click()Dim i As IntegerDim hexData As StringDim a As DoubleDim Buffer(7) As Bytea = Val(Text1)CopyMemory Buffer(0), a, 8For i = 0 To 7If Len(Hex(Buffer(i))) = 1 ThenhexData = "0" & Hex(Buffer(i)) + hexDataElsehexData = Hex(Buffer(i)) + hexDataEnd IfNextText2 = hexDataEnd SubPrivate Sub cmdHexDec_Click()Dim sinStr As StringDim sinSj As DoubleDim bytes(7) As ByteDim i As IntegersinStr = Text2For i = 1 To Len(Text2) Step 2bytes((15 - i) / 2) = Val("&H" & Mid(sinStr, i, 2))NextCopyMemory ByVal VarPtr(sinSj), ByVal VarPtr(bytes(0)), 8Text3 = sinSjEnd Sub但从中无法了解它是如何进行运算处理的。
以下通过对Single(单精度浮点型)和Double (双精度浮点型)在内存的储存方式进行分析。
VB的Single 数据类型Single(单精度浮点型)变量存储为 IEEE 32 位(4 个字节)浮点数值的形式,它的范围在负数的时候是从 -3.402823E38 到 -1.401298E-45,而在正数的时候是从 1.401298E-45 到3.402823E38。
Single 的类型声明字符为感叹号 (!)。
在内存以32位二进制形式存在:XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX第1位为符号位第2-9位为阶码位第10-32位为2进制小数尾值即F2 ^ n * 1. XXXXXXX XXXXXXXX XXXXXXXX其中F为正号或负号(首为为0正数,首位为1负数n为2-9位组成的BYTE数据值XXXXXXX XXXXXXXX XXXXXXXX为尾数Double(双精度浮点型)变量存储为 IEEE 64 位(8 个字节)浮点数值的形式,它的范围在负数的时候是从 -1.79769313486232E308 到 -4.94065645841247E-324,而正数的时候是从4.94065645841247E-324 到 1.79769313486232E308。
Double 的类型声明字符是数字符号(#)。
在内存以64位二进制形式存在:XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX第1位为符号位第2-12位为阶码位第13-64位为2进制小数尾值即F2 ^ n * 1. XXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX其中F为正号或负号(首为为0正数,首位为1负数n为2-12位组成的BYTE数据值XXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX为尾数以下代码是基于前叙述的Single(单精度浮点型)在内存的储存方式进行分析后作出的2-10进制浮点数运算:Option ExplicitDim hexData As StringDim i As SingleDim bindata As StringDim zs As String * 8Dim zssz As StringDim xs As String * 23Dim xs_js() As DoubleDim xs_hj As DoubleDim sinData As SingleDim sHex As StringDim sBin As StringDim fh As StringPrivate Sub Command1_Click()Dim fh As StringsHex = Text1HexToBin (sHex)fh = Mid(bindata, 1, 1) '取符号zs = Mid(bindata, 2, 8) '取指数阶码xs = Mid(bindata, 10, 23) '取2进制小数xs_hj = 0zssz = BinToHex(zs)ReDim xs_js(1 To 23)For i = 1 To 23xs_js(i) = Val(Mid(xs, i, 1))xs_hj = xs_hj + xs_js(i) / (2 ^ (i))NextIf zs <> "00000000" ThenShape1.FillColor = vbGreenIf fh = 0 ThensinData = 2 ^ (Val("&H" & zssz) - 127) * (1 + xs_hj)ElseIf fh = 1 ThensinData = -2 ^ (Val("&H" & zssz) - 127) * (1 + xs_hj)End IfElseIf sHex = "00000000" ThensinData = 0Shape1.FillColor = vbGreenElseIf zs = "00000000" Then '处理在0到1.175494351E-38及Shape1.FillColor = vbRed '0到-1.175494351E-38间的浮点数If fh = 0 ThensinData = 2 ^ (Val("&H" & zssz) - 126) * xs_hjElseIf fh = 1 ThensinData = -2 ^ (Val("&H" & zssz) - 126) * xs_hjEnd IfEnd IfText2 = sinDataEnd SubPublic Function HexToBin(ByVal sHex As String) As StringConst s1 = "0000101001101111000", s2 = "0125A4936DB7FEC8"Dim i As Integer, sBin As StringsHex = UCase(sHex)For i = 1 To Len(sHex)sBin = sBin & Mid(s1, InStr(1, s2, Mid(sHex, i, 1)), 4)Next iHexToBin = sBinbindata = sBinEnd FunctionPublic Function BinToHex(ByVal sBin As String) As StringConst s1 = "0000101001101111000", s2 = "0125A4936DB7FEC8"Dim i As Integer, sHex As StringsBin = String(3 - (Len(sBin) - 1) Mod 4, "0") & sBinFor i = 1 To Len(sBin) Step 4sHex = sHex & Mid(s2, InStr(1, s1, Mid(sBin, i, 4)), 1)Next iBinToHex = sHexEnd Function以下代码是基于前叙述的Double(双精度浮点型)在内存的储存方式进行分析后作出的2-10进制浮点数运算:Option ExplicitPrivate Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)Dim hexData As StringDim i As SingleDim bindata As StringDim zs As String '* 8Dim zssz As StringDim xs As String '* 23Dim xs_js() As DoubleDim xs_hj As DoubleDim sinData As DoubleDim sHex As StringDim sBin As StringPrivate Sub Command2_Click()Dim fh As StringsHex = Text2HexToBin (sHex)fh = Mid(bindata, 1, 1)zs = Mid(bindata, 2, 11) '取指数xs = Mid(bindata, 13, 52) '取2进制小数xs_hj = 0zs = "0" & zszssz = BinToHex(zs)ReDim xs_js(1 To 52)For i = 1 To 52xs_js(i) = Val(Mid(xs, i, 1))xs_hj = xs_hj + xs_js(i) / (2 ^ (i))NextIf zs <> "000000000000" ThenShape1.FillColor = vbGreenIf fh = 0 ThensinData = 2 ^ (Val("&H" & zssz) - 1023) * (1 + xs_hj)ElseIf fh = 1 ThensinData = -2 ^ (Val("&H" & zssz) - 1023) * (1 + xs_hj)End IfElseIf sHex = "00000000" ThensinData = 0Shape1.FillColor = vbGreenElseIf zs = "000000000000" Then '处理在0到2.2250738585072E-308及Shape1.FillColor = vbRed '0到-2.2250738585072E-308间的浮点数 If fh = 0 ThensinData = 2 ^ (Val("&H" & zssz) - 1022) * xs_hjElseIf fh = 1 ThensinData = -2 ^ (Val("&H" & zssz) - 1022) * xs_hjEnd IfEnd IfText3 = sinDataEnd SubPublic Function HexToBin(ByVal sHex As String) As StringConst s1 = "0000101001101111000", s2 = "0125A4936DB7FEC8"Dim i As Integer, sBin As StringsHex = UCase(sHex)For i = 1 To Len(sHex)sBin = sBin & Mid(s1, InStr(1, s2, Mid(sHex, i, 1)), 4)Next iHexToBin = sBinbindata = sBinEnd FunctionPublic Function BinToHex(ByVal sBin As String) As StringConst s1 = "0000101001101111000", s2 = "0125A4936DB7FEC8"Dim i As Integer, sHex As StringsBin = String(3 - (Len(sBin) - 1) Mod 4, "0") & sBinFor i = 1 To Len(sBin) Step 4sHex = sHex & Mid(s2, InStr(1, s1, Mid(sBin, i, 4)), 1)Next iBinToHex = sHexEnd Function字符串类型转化为单精度类型Private Sub Command1_Click()s = "123.456"d = CSng(s)Print dEnd Sub本来浮点数是这样转化的,但是好象显示的结果和你的有点不同,我不知道什么原因VB codePrivate Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)Public Function SngToLng(ByVal Value As Single) As LongCopyMemory SngToLng, Value, 4End FunctionPublic Function LngToSng(ByVal Value As Long) As SingleCopyMemory LngToSng, Value, 4End Function。