VB程序设计-进制转换研究
vb 十进制浮点 数转换为二进制

vb 十进制浮点数转换为二进制【VB 十进制浮点数转换为二进制】一文引言:在计算机科学中,二进制是一种最基本的数字系统,它由0和1两个数字组成。
然而,在实际生活中,我们经常使用十进制数来表示数值。
因此,当我们需要在计算机程序中处理数值时,需要将十进制浮点数转换为二进制表示形式。
本文将详细介绍如何使用VB(Visual Basic)编程语言将十进制浮点数转换为二进制数。
第一步:了解浮点数的表示规则在计算机中,浮点数是一种用于表示小数的标准方法。
它由三个部分组成:符号位、尾数和指数。
符号位用于表示数的正负,尾数是小数的有效数字,而指数用于表示小数点的位置。
浮点数可以表示较大或较小的数字范围,并且具有可变的精度。
第二步:将十进制浮点数拆分为符号、尾数和指数部分在VB中,我们可以使用如下代码将十进制浮点数拆分为符号、尾数和指数部分:Dim value As Double = 10.25Dim sign As Integer = Math.Sign(value) ' 获取符号位Dim absoluteValue As Double = Math.Abs(value) ' 获取绝对值Dim exponent As Integer = Math.Floor(Math.Log(absoluteValue, 2)) ' 获取指数Dim significand As Double = absoluteValue / Math.Pow(2, exponent) ' 获取尾数在上述代码中,我们首先使用`Math.Sign`函数获取符号位。
然后,我们使用`Math.Abs`函数获取小数的绝对值,并使用`Math.Floor`和`Math.Log`函数获取指数部分。
最后,通过除以2的幂次方,我们可以得到尾数部分。
第三步:将尾数部分转换为二进制数在VB中,我们可以使用如下代码将尾数部分转换为二进制数:Dim binaryString As String = ""Dim precision As Integer = 23 ' 单精度浮点数为23位有效数字For i As Integer = 1 To precisionsignificand *= 2 ' 扩大2倍Dim bit As Integer = Math.Floor(significand) ' 获取整数部分binaryString += bit.ToString() ' 添加到二进制字符串significand -= bit ' 去掉整数部分Next在上述代码中,我们首先定义一个空字符串`binaryString`来保存二进制数。
VB中的进制转换方法大全

VB中的进制转换方法大全VB中的进制转换方法大全 VB中的进制转换方法大全dim objacc as objectset objacc = createobject("access.application")objacc.opencurrentdatabase "c:\\db.mdb"objacc.docmd.openreport "表报一"objacc.quitset objacc = nothing==========================================================VB中的进制转换-------------------------------------------------用函数Oct()将十进制位数转换为八进制,用Hex()将十进制位数转换为十六进制,不过值得注意的是转换后数字型变为字符型。
如果是一个变量我们可以用如下代码完成十进制向其他进制转换的目的。
dim Anum as longAnum=& 010 '&0是八进制的表示符号Anum自行转换为8。
Anum=&HA '&H是十六进制的表示符号Anum自行转换为10。
如果我们有一个字符变量Astring 为八进制的或十六进制的,用Anum=” &0” + Astring和Anum=“&H”+Astring 能将它转换为十进制。
VB中我没有找到二进制的转换函数,用如下代码可以实现十进制到二进制的转换。
Option ExplicitPtivate FunctiOn T enturnTwo (ByVal varNum As Long)Dim returnString As String,ModNum As IntegerDO While varNum>0ModNum=varNum Mod 2varNum=varNum\\2returnString=Trim(Str (ModNum))+returnStringLoopTenturnTwo=returnStringEnd FunctionPrivate Function TwoturnTen (ByVal varString As String)Dim Slen As Long,I As Long,returnNum As LongSlen=Len(varString)For I=o T o Slen-1returmNum=returnNum +Val(Mid (varString,I+1,1))*(2^(Slen-I-1))NextTWoturnTen=returnNumEnd Function。
VB进制转换大全(十进制、十六进制、八进制、二进制、二进制流)互转

VB进制转换大全(十进制、十六进制、八进制、二进制、二进制流)互转模块包含了下面的各种转换:二进制转十进制二进制转化为八进制二进制转化为十六进制八进制转化为十进制八进制转化为二进制八进制转化为十六进制十进制转二进制十进制转化为八进制十进制转化为十六进制十六进制转化为二进制十六进制转化为八进制十六进制转化为十进制16进制转ASC10进制长整数转4位16进制字符串10进制长整数转2位16进制字符串ASCII字符串转16进制字符串反16进制数转10进制数,共8位反16进制数转10进制数,共6位反16进制数转10进制数,共4位10进制数转反16进制数,共8位0进制数转反16进制数,共6位10进制数转反16进制数,共4位记录集转二进制流ASCII码转二进制流二进制流转ASCII码VBScript code复制代码'二进制转十进制PublicFunctionB2D(vBStr AsString) AsLongDimvLen AsInteger'串长DimvDec AsLong'结果DimvG AsLong'权值DimvI AsLong'位数DimvTmp AsString'临时串DimvN AsLong'中间值vLen = Len(vBStr) vG = 1 '初始权值vDec = 0 '结果初值B2D = vDec '返回初值ForvI = vLen To1 Step-1 vTmp = Mid(vBStr, vI, 1) '取出当前位vN = Val(vTmp) IfvN < 2 Then'判断是不是合法二进制串,貌似不严谨,E文和符号会被判0而合法vDec = vDec + vG * vN '得到中间结果vG = vG + vG ElsevDec = 0 'msgbox '不是有效的二进制数',vbokonlyExitFunctionEndIfNextvI B2D = vDecEndFunction'十进制转二进制PublicFunctionD2B(Dec AsLong) AsStringD2B = ''DoWhileDec > 0 D2B = Dec Mod2 & D2B Dec = Dec \ 2 Loop EndFunction' 用途:将十六进制转化为二进制' 输入:Hex(十六进制数)' 输入数据类型:String' 输出:H2B(二进制数)' 输出数据类型:String' 输入的最大数为2147483647个字符PublicFunctionH2B(ByValHexAsString) AsStringDimi AsLongDimb AsStringHex= UCase(Hex) Fori = 1 ToLen(Hex) SelectCaseMid(Hex, i, 1) Case'0': b = b & '0000'Case'1': b = b & '0001'Case'2': b = b & '0010'Case'3': b = b & '0011'Case'4': b = b & '0100'Case'5': b = b & '0101'Case'6': b = b & '0110'Case'7': b = b & '0111'Case'8': b = b & '1000'Case'9': b = b & '1001'Case'A': b = b & '1010'Case'B': b = b & '1011'Case'C': b = b & '1100'Case'D': b = b & '1101'Case'E': b = b & '1110'Case'F': b = b & '1111'EndSelectNexti WhileLeft(b, 1) = '0'b = Right(b, Len(b) - 1) WendH2B = bEndFunction' 用途:将二进制转化为十六进制' 输入:Bin(二进制数)' 输入数据类型:String' 输出:B2H(十六进制数)' 输出数据类型:String' 输入的最大数为2147483647个字符PublicFunctionB2H(ByValBin AsString) AsStringDimi AsLongDimH AsStringIfLen(Bin) Mod4 <> 0 ThenBin = String(4 - Len(Bin) Mod4, '0') & Bin EndIfFori = 1 ToLen(Bin) Step4 SelectCaseMid(Bin, i, 4) Case'0000': H = H & '0'Case'0001': H = H & '1'Case'0010': H = H & '2'Case'0011': H = H & '3'Case'0100': H = H & '4'Case'0101': H = H & '5'Case'0110': H = H & '6'Case'0111': H = H & '7'Case'1000': H = H & '8'Case'1001': H = H & '9'Case'1010': H = H & 'A'Case'1011': H = H & 'B'Case'1100': H = H & 'C'Case'1101': H = H & 'D'Case'1110': H = H & 'E'Case'1111': H = H & 'F'EndSelectNexti WhileLeft(H, 1) = '0'H = Right(H, Len(H) - 1) WendB2H = HEndFunction' 用途:将十六进制转化为十进制' 输入:Hex(十六进制数)' 输入数据类型:String' 输出:H2D(十进制数)' 输出数据类型:Long' 输入的最大数为7FFFFFFF,输出的最大数为2147483647PublicFunctionH2D(ByValHexAsString) AsLongDimi AsLongDimb AsLongHex= UCase(Hex) Fori = 1 ToLen(Hex) SelectCaseMid(Hex, Len(Hex) - i + 1, 1) Case'0': b = b + 16 ^ (i - 1) * 0 Case'1': b = b + 16 ^ (i - 1) * 1 Case'2': b = b + 16 ^ (i - 1) * 2 Case'3': b = b + 16 ^ (i - 1) * 3 Case'4': b = b + 16 ^ (i - 1) * 4 Case'5': b = b + 16 ^ (i - 1) * 5 Case'6': b = b + 16 ^ (i - 1) * 6 Case'7': b = b + 16 ^(i - 1) * 7 Case'8': b = b + 16 ^ (i - 1) * 8 Case'9': b = b + 16 ^ (i -1) * 9 Case'A': b = b + 16 ^ (i - 1) * 10 Case'B': b = b + 16 ^ (i - 1) * 11 Case'C': b = b + 16 ^ (i - 1) * 12 Case'D': b = b + 16 ^ (i - 1) * 13 Case'E': b = b + 16 ^ (i - 1) * 14 Case'F': b = b + 16 ^ (i - 1) * 15 EndSelectNexti H2D = bEndFunction' 用途:将十进制转化为十六进制' 输入:Dec(十进制数)' 输入数据类型:Long' 输出:D2H(十六进制数)' 输出数据类型:String' 输入的最大数为2147483647,输出最大数为7FFFFFFFPublicFunctionD2H(Dec AsLong) AsStringDima AsStringD2H = ''DoWhileDec > 0 a = CStr(Dec Mod16) SelectCasea Case'10': a = 'A'Case'11': a = 'B'Case'12': a = 'C'Case'13': a = 'D'Case'14': a = 'E'Case'15': a = 'F'EndSelectD2H = a & D2H Dec = Dec \ 16 LoopEndFunction' 用途:将十进制转化为八进制' 输入:Dec(十进制数)' 输入数据类型:Long' 输出:D2O(八进制数)' 输出数据类型:String' 输入的最大数为2147483647,输出最大数为177****7777PublicFunctionD2O(Dec AsLong) AsStringD2O = ''DoWhileDec > 0 D2O = Dec Mod8 & D2O Dec = Dec \ 8 LoopEndFunction' 用途:将八进制转化为十进制' 输入:Oct(八进制数)' 输入数据类型:String' 输出:O2D(十进制数)' 输出数据类型:Long' 输入的最大数为177****7777,输出的最大数为2147483647PublicFunctionO2D(ByValOctAsString) AsLongDimi AsLongDimb AsLongFori = 1 ToLen(Oct) SelectCaseMid(Oct, Len(Oct) - i + 1, 1) Case'0': b = b + 8 ^ (i - 1) * 0 Case'1': b = b + 8 ^ (i - 1) * 1 Case'2': b = b + 8 ^ (i - 1) * 2 Case'3': b = b + 8 ^ (i - 1) * 3 Case'4': b = b + 8 ^ (i - 1) * 4 Case'5': b = b + 8 ^ (i - 1) * 5 Case'6': b = b + 8 ^ (i - 1) * 6 Case'7': b = b + 8 ^ (i - 1) * 7 EndSelectNexti O2D = bEndFunction' 用途:将二进制转化为八进制' 输入:Bin(二进制数)' 输入数据类型:String' 输出:B2O(八进制数)' 输出数据类型:String' 输入的最大数为2147483647个字符PublicFunctionB2O(ByValBin AsString) AsStringDimi AsLongDimH AsStringIfLen(Bin) Mod3 <> 0 ThenBin = String(3 - Len(Bin) Mod3, '0') & Bin EndIfFori = 1 ToLen(Bin) Step3 SelectCaseMid(Bin, i, 3) Case'000': H = H & '0'Case'001': H = H & '1'Case'010': H = H & '2'Case'011': H = H & '3'Case'100': H = H & '4'Case'101': H = H & '5'Case'110': H = H & '6'Case'111': H = H & '7'EndSelectNexti WhileLeft(H, 1) = '0'H = Right(H, Len(H) - 1) WendB2O = HEndFunction' 用途:将八进制转化为二进制' 输入:Oct(八进制数)' 输入数据类型:String' 输出:O2B(二进制数)' 输出数据类型:String' 输入的最大数为2147483647个字符PublicFunctionO2B(ByValOctAsString) AsStringDimi AsLongDimb AsStringFori = 1 ToLen(Oct) SelectCaseMid(Oct, i, 1) Case'0': b = b & '000'Case'1': b = b & '001'Case'2': b = b & '010'Case'3': b = b & '011'Case'4': b = b & '100'Case'5': b = b & '101'Case'6': b = b & '110'Case'7': b = b & '111'EndSelectNexti WhileLeft(b, 1) = '0'b = Right(b, Len(b) - 1) WendO2B = bEndFunction' 用途:将八进制转化为十六进制' 输入:Oct(八进制数)' 输入数据类型:String' 输出:O2H(十六进制数)' 输出数据类型:String' 输入的最大数为2147483647个字符PublicFunctionO2H(ByValOctAsString) AsStringDimBin AsStringBin = O2B(Oct) O2H = B2H(Bin)EndFunction' 用途:将十六进制转化为八进制' 输入:Hex(十六进制数)' 输入数据类型:String' 输出:H2O(八进制数)' 输出数据类型:String' 输入的最大数为2147483647个字符PublicFunctionH2O(ByValHexAsString) AsStringDimBin AsStringHex= UCase(Hex) Bin = H2B(Hex) H2O = B2O(Bin)EndFunction'====================================== =============='16进制转ASCFunctionH2A(InputData AsString) AsStringDimmydata mydata = Chr(Val('&H'& InputData)) H2A = mydata ExitFunctionEndFunction'10进制长整数转4位16进制字符串FunctionS2H(Num AsLong) AsStringDimmynum AsStringmynum = Hex(Num)IfLen(mynum) = 1 Thenmynum = '000'+ mynumIfLen(mynum) = 2 Thenmynum = '00'+ mynumIfLen(mynum) = 3 Thenmynum = '0'+ Left(mynum, 2) + Right(mynum, 1)IfLen(mynum) = 4 Thenmynum = Right(mynum, 2) + Left(mynum, 2) S2H = mynumEndFunction'10进制长整数转2位16进制字符串FunctionS2H2(Num AsLong) AsStringDimmynum AsStringmynum = Hex(Num)IfLen(mynum) = 1 Thenmynum = '0'+ mynum S2H2 = mynumEndFunction'ASCII字符串转16进制字符串PublicFunctionA2H(str AsString) AsStringDimstrlen AsIntegerDimi AsIntegerDimmystr AsStringmystr = ''strlen = Len(str)Fori = 1 Tostrlen Step1 mystr = mystr + Hex$(Asc(Mid(str, i, 1)))Nexti A2H = mystrEndFunction'====================================== ==============='进制反转'====================================== ==============='反16进制数转10进制数,共8位FunctionFHexToInt(ByValstr AsString) AsStringDimtext1 AsStringtext1 = str Dimtext2 AsStringtext2 = Mid(text1, 7, 2) Dimtext3 AsStringtext3 = Mid(text1, 5, 2) Dimtext4 AsStringtext4 = Mid(text1, 3, 2) Dimtext5 AsStringtext5 = Mid(text1, 1, 2) FHexToInt = Val('&H'& text2 & text3 & text4 & text5) ExitFunctionEndFunction'反16进制数转10进制数,共6位FunctionFHexToInt6(ByValstr AsString) AsStringDimtext1 AsStringtext1 = str Dimtext2 AsStringtext2 = Mid(text1, 5, 2) Dimtext4 AsStringtext3 = Mid(text1, 3, 2) Dimtext5 AsStringtext4 = Mid(text1, 1, 2) FHexToInt6 = Val('&H'& text2 & text3 & text4) ExitFunctionEndFunction'反16进制数转10进制数,共4位FunctionFHexToInt4(ByValstr AsString) AsStringDimtext1 AsStringtext1 = str Dimtext2 AsStringtext2 = Mid(text1, 3, 2) Dimtext4 AsStringtext3 = Mid(text1, 1, 2) FHexToInt4 = Val('&H'& text2 & text3) ExitFunctionEndFunction'10进制数转反16进制数,共8位FunctionIntT oFHex(ByValnums AsLong) AsStringDimtext1 AsString'text1 = Convert.T oString(nums, &H10)text1 = O2H(nums) If(Len(text1) = 1) Thentext1 = ('0000000'& text1) EndIfIf(Len(text1) = 2) Thentext1 = ('000000'& text1) EndIfIf(Len(text1) = 3) Thentext1 = ('00000'& text1) EndIfIf(Len(text1) = 4) Thentext1 = ('0000'& text1) EndIfIf(Len(text1) = 5) Thentext1 = ('000'& text1) EndIfIf(Len(text1) = 6) Thentext1 = ('00'& text1) EndIfIf(Len(text1) = 7) Thentext1 = ('0'& text1) EndIfDimtext2 AsStringtext2 = Mid(text1, 7, 2) Dimtext3 AsStringtext3 = Mid(text1, 5, 2) Dimtext4 AsStringtext4 = Mid(text1, 3, 2) Dimtext5 AsStringtext5 = Mid(text1, 1, 2) IntT oFHex = text2 & text3 & text4 & text5 ExitFunctionEndFunction'10进制数转反16进制数,共6位FunctionIntT oFHex6(ByValnums AsLong) AsStringDimtext1 AsStringtext1 = O2H(nums) If(Len(text1) = 1) Thentext1 = ('00000'& text1) EndIfIf(Len(text1) = 2) Thentext1 = ('0000'& text1) EndIfIf(Len(text1) = 3) Thentext1 = ('000'& text1) EndIfIf(Len(text1) = 4) Thentext1 = ('00'& text1) EndIfIf(Len(text1) = 5) Thentext1 = ('0'& text1) EndIfDimtext2 AsStringtext2 = Mid(text1, 5, 2) Dimtext3 AsStringtext3 = Mid(text1, 3, 2) Dimtext4 AsStringtext4 = Mid(text1, 1, 2) IntT oFHex6 = text2 & text3 & text4 ExitFunctionEndFunction'10进制数转反16进制数,共4位FunctionIntT oFHex4(ByValnums AsLong) AsStringDimtext1 AsStringtext1 = O2H(nums) If(Len(text1) = 1) Thentext1 = ('000'& text1) EndIfIf(Len(text1) = 2) Thentext1 = ('00'& text1) EndIfIf(Len(text1) = 3) Thentext1 = ('0'& text1) EndIfDimtext2 AsStringtext2 = Mid(text1, 3, 2) Dimtext3 AsStringtext3 = Mid(text1, 1, 2) IntT oFHex4 = text2 & text3 ExitFunctionEndFunction'====================================== ====PublicFunctionB2S(ByValstr AsByte) strto = ''Fori = 1 ToLenB(str) IfAscB(MidB(str, i, 1)) > 127 Thenstrto = strto & Chr(AscB(MidB(str, i, 1)) * 256 + AscB(MidB(str, i + 1, 1))) i = i + 1 Elsestrto = strto & Chr(AscB(MidB(str, i, 1))) EndIfNextB2S = strtoEndFunctionPublicFunctionV2H(ByValsHex AsString, OptionalbUnicode AsBoolean) DimsByte AsVariantDimbyChar() AsByteDimi AsLongsHex = Replace(sHex, vbCrLf, '') sByte = Split(sHex, ' ') ReDimbyChar(0 T oUBound(sByte)) AsByteFori = 0 ToUBound(sByte) byChar(i) = Val('&h'& sByte(i)) NextIfbUnicode ThenV2H = byChar ElseV2H = StrConv(byChar, vbUnicode) EndIfEndFunction'记录集转二进制流PublicFunctionR2B(rs AsRecordset) AsVariant'记录集转换为二进制数据DimobjStream AsStream SetobjStream = NewStream objStream.OpenobjStream.Type= adTypeBinary rs.Save objStream, adPersistADTG objStream.Position = 0 R2B = objStream.Read() SetobjStream = NothingEndFunction'ASCII码转二进制流PublicFunctionA2B(str AsString) AsVariantDima() AsByte, s AsStrings = str a = StrConv(s, vbFromUnicode) '字符串转换为byte型'a 是byte数组,你可以在程序中调用,但不能在textbox中显示。
最新vb编程序实现十进制数转换成2、8、16进制数学习资料

VB编程序实现十进制数转换成2、8、16进制数十进制转二进制Public Function DECtoBIN(Dec As Long) As StringDECtoBIN = ""Do While Dec > 0DECtoBIN = Dec Mod 2 & DECtoBINDec = Dec \ 2LoopEnd Function十进制转八进制:VB自带函数:Oct(num)十进制转十六进制:VB自带函数:hex(num)转换成十六进制Hex()如:10(十进制):Hex(10)=A转换成8进制Oct()如:10(十进制):Oct(10)=12转换成2进制,使用下面的方法'采用连除2取余数,将一个十进制数转换为二进制数Dim Dec As Integer '输入一个十进制数Dim Bin As String '转换为二进制表示Dim res As IntegerDim i As IntegerDec = Val(InputBox("x="))Form1.Print "十进制数:"; DecDores = Dec Mod 2 '求出除以2的余数Bin = res & BinDec = Dec \ 2Loop While Dec <> 0Form1.Print "转换为二进制数为:"; BinPrivate Sub Command1_Click()Print bin(Text1.Text)End SubFunction bin(n As Long) As StringDo Until n = 0bin = (n Mod 2) & binn = n \ 2LoopEnd Function十六进制:Hex(number)或使用&H前缀八进制:Oct(number)或使用&O前缀二、八、十六进制转为十进制:参数sdate为要进行转换的数,stype为此数的类型。
VB--十进制-八进制-十六进制-二进制相互转换大全

VB--十进制-八进制-十六进制(shí liù jìn zhì)-二进制相互转换大全VB--十进制-八进制-十六进制-二进制相互转换(zhuǎnhuàn)大全VB--十进制,八进制,十六进制,二进制相互转换(zhuǎnhuàn)大全1.用途(yòngtú):将十进制转化为二进制' 输入(shūrù):Dec(十进制数)' 输入(shūrù)数据类型:Long' 输出(shūchū):DEC_to_BIN(二进制数)' 输出数据类型:String' 输入的最大数为2147483647,输出最大数为1111111111111111111111111111111(31个1) Public Function DEC_to_BIN(Dec As Long) As StringDEC_to_BIN = ""Do While Dec > 0DEC_to_BIN = Dec Mod 2 & DEC_to_BIN Dec = Dec \ 2LoopEnd Function'2. 用途:将二进制转化为十进制' 输入:Bin(二进制数)' 输入(shūrù)数据类型:String' 输出(shūchū):BIN_to_DEC(十进制数)' 输出(shūchū)数据类型:Long' 输入(shūrù)的最大数为1111111111111111111111111111111(31个1),输出最大数为2147483647Public Function BIN_to_DEC(ByVal Bin As String) As LongDim i As LongFor i = 1 To Len(Bin)BIN_to_DEC = BIN_to_DEC * 2 +Val(Mid(Bin, i, 1))Next iEnd Function' 3.用途(yòngtú):将十六进制转化为二进制' 输入:Hex(十六进制数)' 输入数据类型:String' 输出:HEX_to_BIN(二进制数)' 输出数据类型:String' 输入的最大数为2147483647个字符Public Function HEX_to_BIN(ByVal Hex As String) As StringDim i As LongDim B As StringHex = UCase(Hex)For i = 1 To Len(Hex)Select Case Mid(Hex, i, 1)Case "0": B = B & "0000" Case "1": B = B & "0001" Case "2": B = B & "0010" Case "3": B = B & "0011" Case "4": B = B & "0100" Case "5": B = B & "0101" Case "6": B = B & "0110" Case "7": B = B & "0111" Case "8": B = B & "1000" Case "9": B = B & "1001" Case "A": B = B & "1010" Case "B": B = B & "1011" Case "C": B = B & "1100" Case "D": B = B & "1101" Case "E": B = B & "1110" Case "F": B = B & "1111" End SelectNext iWhile Left(B, 1) = "0"B = Right(B, Len(B) - 1)WendHEX_to_BIN = BEnd Function' 4.用途(yòngtú):将二进制转化为十六进制' 输入(shūrù):Bin(二进制数)' 输入(shūrù)数据类型:String' 输出(shūchū):BIN_to_HEX(十六进制数) ' 输出(shūchū)数据类型:String' 输入的最大数为2147483647个字符Public Function BIN_to_HEX(ByVal Bin As String) As StringDim i As LongDim H As StringIf Len(Bin) Mod 4 <> 0 ThenBin = String(4 - Len(Bin) Mod 4, "0") & BinEnd IfFor i = 1 To Len(Bin) Step 4Select Case Mid(Bin, i, 4)Case "0000": H = H & "0"Case "0001": H = H & "1" Case "0010": H = H & "2" Case "0011": H = H & "3" Case "0100": H = H & "4" Case "0101": H = H & "5" Case "0110": H = H & "6" Case "0111": H = H & "7" Case "1000": H = H & "8" Case "1001": H = H & "9" Case "1010": H = H & "A" Case "1011": H = H & "B" Case "1100": H = H & "C" Case "1101": H = H & "D" Case "1110": H = H & "E" Case "1111": H = H & "F" End SelectNext iWhile Left(H, 1) = "0"H = Right(H, Len(H) - 1)WendBIN_to_HEX = HEnd Function'5. 用途(yòngtú):将十六进制转化为十进制' 输入(shūrù):Hex(十六进制数)' 输入(shūrù)数据类型:String' 输出(shūchū):HEX_to_DEC(十进制数)' 输出(shūchū)数据类型:Long' 输入的最大数为7FFFFFFF,输出的最大数为2147483647Public Function HEX_to_DEC(ByVal Hex As String) As LongDim i As LongDim B As LongHex = UCase(Hex)For i = 1 To Len(Hex)Select Case Mid(Hex, Len(Hex) - i + 1, 1) Case "0": B = B + 16 ^ (i - 1) * 0Case "1": B = B + 16 ^ (i - 1) * 1Case "2": B = B + 16 ^ (i - 1) * 2Case "3": B = B + 16 ^ (i - 1) * 3Case "4": B = B + 16 ^ (i - 1) * 4Case "5": B = B + 16 ^ (i - 1) * 5Case "6": B = B + 16 ^ (i - 1) * 6Case "7": B = B + 16 ^ (i - 1) * 7Case "8": B = B + 16 ^ (i - 1) * 8Case "9": B = B + 16 ^ (i - 1) * 9Case "A": B = B + 16 ^ (i - 1) * 10Case "B": B = B + 16 ^ (i - 1) * 11Case "C": B = B + 16 ^ (i - 1) * 12Case "D": B = B + 16 ^ (i - 1) * 13Case "E": B = B + 16 ^ (i - 1) * 14Case "F": B = B + 16 ^ (i - 1) * 15End SelectNext iHEX_to_DEC = BEnd Function' 6.用途(yòngtú):将十进制转化为十六进制' 输入(shūrù):Dec(十进制数)' 输入(shūrù)数据类型:Long' 输出(shūchū):DEC_to_HEX(十六进制数)' 输出(shūchū)数据类型:String' 输入(shūrù)的最大数为2147483647,输出最大数为7FFFFFFFPublic Function DEC_to_HEX(Dec As Long) As StringDim a As StringDEC_to_HEX = ""Do While Dec > 0a = CStr(Dec Mod 16)Select Case aCase "10": a = "A"Case "11": a = "B"Case "12": a = "C"Case "13": a = "D"Case "14": a = "E"Case "15": a = "F"End SelectDEC_to_HEX = a & DEC_to_HEX Dec = Dec \ 16LoopEnd Function'7. 用途(yòngtú):将十进制转化为八进制' 输入(shūrù):Dec(十进制数)' 输入(shūrù)数据类型:Long' 输出(shūchū):DEC_to_OCT(八进制数) ' 输出(shūchū)数据类型:String' 输入的最大数为2147483647,输出最大数为177********Public Function DEC_to_OCT(Dec As Long) As StringDEC_to_OCT = ""Do While Dec > 0DEC_to_OCT = Dec Mod 8 &DEC_to_OCTDec = Dec \ 8LoopEnd Function'8. 用途:将八进制转化为十进制' 输入:Oct(八进制数)' 输入数据类型:String' 输出:OCT_to_DEC(十进制数)' 输出(shūchū)数据类型:Long' 输入(shūrù)的最大数为177********,输出的最大数为2147483647Public Function OCT_to_DEC(ByVal Oct As String) As LongDim i As LongDim B As LongFor i = 1 To Len(Oct)Select Case Mid(Oct, Len(Oct) - i + 1, 1) Case "0": B = B + 8 ^ (i - 1) * 0Case "1": B = B + 8 ^ (i - 1) * 1Case "2": B = B + 8 ^ (i - 1) * 2Case "3": B = B + 8 ^ (i - 1) * 3Case "4": B = B + 8 ^ (i - 1) * 4Case "5": B = B + 8 ^ (i - 1) * 5Case "6": B = B + 8 ^ (i - 1) * 6Case "7": B = B + 8 ^ (i - 1) * 7End SelectNext iOCT_to_DEC = BEnd Function' 9.用途(yòngtú):将二进制转化为八进制' 输入(shūrù):Bin(二进制数)' 输入(shūrù)数据类型:String' 输出(shūchū):BIN_to_OCT(八进制数)' 输出(shūchū)数据类型:String' 输入的最大数为2147483647个字符Public Function BIN_to_OCT(ByVal Bin As String) As StringDim i As LongDim H As StringIf Len(Bin) Mod 3 <> 0 ThenBin = String(3 - Len(Bin) Mod 3, "0") & BinEnd IfFor i = 1 To Len(Bin) Step 3Select Case Mid(Bin, i, 3)Case "000": H = H & "0"Case "001": H = H & "1"Case "010": H = H & "2"Case "011": H = H & "3"Case "100": H = H & "4"Case "101": H = H & "5"Case "110": H = H & "6"Case "111": H = H & "7"End SelectNext iWhile Left(H, 1) = "0"H = Right(H, Len(H) - 1)WendBIN_to_OCT = HEnd Function'10. 用途(yòngtú):将八进制转化为二进制' 输入(shūrù):Oct(八进制数)' 输入(shūrù)数据类型:String' 输出(shūchū):OCT_to_BIN(二进制数)' 输出(shūchū)数据类型:String' 输入的最大数为2147483647个字符Public Function OCT_to_BIN(ByVal Oct As String) As StringDim i As LongDim B As StringFor i = 1 To Len(Oct)Select Case Mid(Oct, i, 1)Case "0": B = B & "000"Case "1": B = B & "001"Case "2": B = B & "010"Case "3": B = B & "011"Case "4": B = B & "100"Case "5": B = B & "101"Case "6": B = B & "110"Case "7": B = B & "111"End SelectNext iWhile Left(B, 1) = "0"B = Right(B, Len(B) - 1)WendOCT_to_BIN = BEnd Function'11. 用途(yòngtú):将八进制转化为十六进制' 输入(shūrù):Oct(八进制数)' 输入(shūrù)数据类型:String' 输出(shūchū):OCT_to_HEX(十六进制数) ' 输出(shūchū)数据类型:String' 输入(shūrù)的最大数为2147483647个字符Public Function OCT_to_HEX(ByVal Oct As String) As StringDim Bin As StringBin = OCT_to_BIN(Oct)OCT_to_HEX = BIN_to_HEX(Bin)End Function'12. 用途:将十六进制(shí liù jìn zhì)转化为八进制' 输入(shūrù):Hex(十六进制数)' 输入(shūrù)数据类型:String' 输出(shūchū):HEX_to_OCT(八进制数)' 输出数据类型:String' 输入的最大数为2147483647个字符Public Function HEX_to_OCT(ByVal Hex As String) As StringDim Bin As StringHex = UCase(Hex)Bin = HEX_to_BIN(Hex)HEX_to_OCT = BIN_to_OCT(Bin)End FunctionVB自带函数(hánshù):十进制转八进制:Oct(num)十六进制(shí liù jìn zhì)转八进制:oct("&H" & num)十进制转十六进制(shí liù jìn zhì):hex(num)八进制转十六进制(shí liù jìn zhì):hex("&O" & num)十六进制(shí liù jìn zhì)转换为十进制 Dim str As Stringstr = Text2.TextText10.Text = CLng("&H" & str)内容总结(1)VB--十进制-八进制-十六进制-二进制相互转换大全。
VB进制转换(第二课时)

适用范围?
十六进制转十进制(从左往右)
(2A3)16=( 675)10
Dim c As Integer, y As Integer
Dim s As String
s = Text1.Text
y=0
If Mid(s, i, 1) >= "A" And Mid(s,
For i = 1 To Len(s)
进制转换之二进制转十六进制
每4个二进制位转换成一个十六进制位,不足4位前面补0
0 0 01 1 1 1 0 0 0 1 1 0 1 1 0
S
前面补0操作代码:
For i = 1 To 4 - Len(s) Mod 4 s = "0" + s
Next i
If Len(s) Mod 4 <> 0 Then s = String(4 - d Mod 4, "0") & s
i, 1) <= "F" Then
c = Val(Mid(s, i, 1))
c = Asc(Mid(s, i, 1)) 126 ^^((lleenn((ss))--ii))
Else
Next i Text2.Text = Str(y)
? c = Val(Mid(s, i, 1)) End If
VB进制转换
第二课时 R转十 二、十六互转
进制转换之二进制转十进制
11010 26 乘权相加法 每一位*2 ^(i-1)
=1*2^4+1*2^3+0*2^2+1*2^1+0*2^0
注意: 1、对于进制转换 :第 1位在右边,最高位在左边
VB常用算法9进制转换

VB常用算法----进制转化1、十进制正整数m转换为R(2-16)进制的字符串。
思路:将m不断除r取余数,直到商为0,将余数反序即得到结果。
算法实现:Private Function Tran(ByVal m As Integer, ByVal r As Integer) As StringDim StrDtoR As String, n As IntegerDo While m <> on = m Mod rm = m \ rIf n > 9 ThenStrDtoR = Chr(65 + n - 10) & StrDtoRElseStrDtoR = n & StrDtoREnd IfLoopTran = StrDtoREnd Function2、R(2-16)进制字符串转换为十进制正整数。
思路:R进制数每位数字乘以权值之和即为十进制数。
算法实现:Private Function Tran(ByVal s As String, ByVal r As Integer) As integerDim n As Integer, dec As Integers = UCase(Trim(s))For i% = 1 To Len(s)If Mid(s, i, 1) >= "A" Thenn = Asc(Mid(s, i, 1)) - Asc("A") + 10Elsen = Val(Mid(s, i, 1))End Ifdec = dec + n * r ^ (Len(s) - i)Next iTran = decEnd Function解题技巧进制转化的原理要清楚,同时编写代码时候要留意16进制中的A-F字符的处理。
3、实战练习1)补充代码(2002秋二(9))本程序是把给定的二进制整数转换为八进制整数。
Option ExplicitPrivate Sub Command1_Click()Dim a As String, b As String, c As StringDim L As Integer, m As Integer, n As Integera = InputBox("请输入一个二进制数", "输入框")(1)a = String(L, "0") & a(2)For m = 1 To n / 3b = Mid(a, 3 * m - 2, 3)(3)Next mText1.Text = cEnd SubPrivate Function zh(s As String) As StringDim i As Integer, n As Integer, p As Integerp = 1For i = 2 To 0 Step -1(4)p = p + 1Next izh = Str(n)End Function2)补充代码(2001春二(7))下面程序是把给定的16进制正整数转换为10进制数。
vb 16进制转换成10进制

VB中的16进制转换成10进制是一个常见的问题,这涉及到了计算机数据的存储和处理。
在VB程序中,我们经常会遇到需要将16进制数转换成10进制数的情况,因此了解如何进行这种转换是非常重要的。
1. 16进制和10进制的基本概念在开始介绍VB中16进制转换成10进制的方法之前,我们首先需要了解一下16进制和10进制的基本概念。
2. 16进制数是一种使用16个不同符号来表示数字的方法。
这些符号包括0~9和A~F,其中A~F分别表示10~15。
16进制数1A3F表示的10进制数为6719。
3. 10进制是我们日常生活中常用的一种数字表示方法,它包含了0~9这10个数字。
10进制数123表示的就是123。
4. VB中16进制转换成10进制的方法在VB中,提供了一种方便的方法来进行16进制转换成10进制的操作。
我们可以使用`Convert.ToInt32`方法来实现这一转换。
5. 下面是一个示例代码,演示了如何在VB中将16进制数转换成10进制数:```vbDim hexValue As String = "1A3F"Dim decValue As Integer = Convert.ToInt32(hexValue, 16) Console.WriteLine("16进制数" hexValue " 转换成10进制数为 " decValue)```6. 在这段示例代码中,我们首先定义了一个16进制数`hexValue`,其值为"1A3F"。
然后使用`Convert.ToInt32`方法将其转换成10进制数`decValue`,最后输出转换后的结果。
7. 在实际的开发过程中,我们可能会遇到需要从字符串类型的16进制数转换成10进制数的情况。
这时,我们可以使用`Convert.ToInt32`方法来进行转换。
8. 另外,如果我们需要将一个表示16进制数的字符数组转换成10进制数,也可以使用`Convert.ToInt32`方法,并指定进制数为16。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VB程序设计-进制转换研究
(作者:草原飞狼 2014年5月29日)
声明:仅供学习与交流使用,高手请飘过,谢谢!所有代码都是个人亲自编写并调试成功。
布局
算法示意图(1)
算法示意图(2)
运行界面(1)源代码如下:
Private Sub Command1_Click()
Rem 二进制转十进制,普通方法
Dim d As String 'd表示text1中的某一个具体的字符
Dim i As Integer 'i表示循环变量
Dim str As String 'str表示text1中去掉空格后的字符串
Dim dd As Integer 'dd表示一个十进制数
Dim len_str As Integer '表示text1中去掉左右空格后文本的长度
str = Trim(Text1.Text)
len_str = Len(str)
Rem 以下是二进制输入合法性的判断
For i = 1 To len_str
d = Val(Mid(str, i, 1))
If d > 1 Then
MsgBox "请重新输入一个合法的二进制数!", vbOKOnly + vbExclamation, "错误提示"
Text1.Text = "1010"
Text1.SetFocus
Exit Sub
End If
Next i
Rem 以下是二进制转十进制的算法
dd = 0
For i = 1 To len_str
dd = dd + Val(Mid(str, i, 1)) * 2 ^ (len_str - i) '核心算法,注意理解
Next i
Text3.Text = dd
End Sub
Private Sub Command2_Click()
Rem 清空
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
End Sub
Private Sub Command3_Click()
Rem 退出
Unload Me
End Sub
Private Sub Command4_Click()
Rem 十进制转二进制,普通方法
Dim str As String '用于连接生成的余数
Dim dd As Integer '用于生成当前的商
dd = Val(Text2.Text)
Do While dd > 0
str = dd Mod 2 & str '注意字符串的连接顺序:把余数连接在当前字符串之前dd = dd \ 2 '求商
Loop
'Print dd 'dd=0
Text4.Text = str
End Sub
Private Sub Command5_Click()
Rem 二进制转十进制,函数调用方法
Dim d As String 'd表示text1中的某一个具体的字符
Dim i As Integer 'i表示循环变量
Dim str As String 'str表示text1中去掉空格后的字符串
Dim dd As Integer 'dd表示一个十进制数
Dim len_str As Integer '表示text1中去掉左右空格后文本的长度
str = Trim(Text1.Text)
len_str = Len(str)
Rem 以下是二进制输入合法性的判断
For i = 1 To len_str
d = Val(Mid(str, i, 1))
If d > 1 Then
MsgBox "请重新输入一个合法的二进制数!", vbOKOnly + vbExclamation, "错误提示"
Text1.Text = "1010"
Text1.SetFocus
Exit Sub
End If
Next i
Call ertoshi(str) '函数调用,此名也可以省略
Text3.Text = ertoshi(str)
End Sub
Private Function ertoshi(ByVal mystr As String) As String
Rem 2进制转10进制函数,以下变量与主函数同名,也可以定义成全局变量
Dim i As Integer
Dim dd As Integer
Dim str As String 'str表示text1中去掉空格后的字符串
Dim len_str As Integer '表示text1中去掉左右空格后文本的长度
str = Trim(Form1.Text1.Text)
len_str = Len(str)
dd = 0
For i = 1 To len_str
dd = dd + Val(Mid(str, i, 1)) * 2 ^ (len_str - i)
Next i
ertoshi = dd '将dd值返回给函数
End Function
Private Sub Command6_Click()
Rem 十进制转二进制,函数调用方法
Dim dd As Integer '用于生成当前的商
dd = Val(Text2.Text)
Call shitoer(dd)
Text4.Text = shitoer(dd)
End Sub
Private Function shitoer(ByVal mydd As Integer) As String
Rem 10进制转2进制函数
Dim mystr As String
mystr = ""
Do While mydd > 0
mystr = mydd Mod 2 & mystr '注意mystr连接顺序mydd = mydd \ 2
Loop
shitoer = mystr '将mystr返回给函数End Function
Private Sub Form_Load()
Rem 初始化
With Form1
.FontName = "宋体"
.FontBold = True
.FontSize = 16
.ForeColor = vbRed
End With
End Sub。