`
yuanlanxiaup
  • 浏览: 865674 次
文章分类
社区版块
存档分类
最新评论

2、8、10、16进制数相互转换的12种算法

 
阅读更多

Option Explicit<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

'2进制转换为10制数

Public Function BinToDec(bin As String) As Long

Dim i As Long

For i = 1 To Len(bin)

BinToDec = BinToDec * 2 + Val(Mid(bin, i, 1))

Next

End Function

'10进制转换为2制数

Public Function DecToBin(dec As Long) As String

DecToBin = ""

Do While dec > 0

DecToBin = (dec Mod 2) & DecToBin

dec = dec / 2

<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /><place w:st="on">Loop</place>

End Function

'16进制数转换为10进制数

Public Function HexToDec(str2 As String) As Long

Dim i As Long, a As Variant, k As Long

k = 0

For i = Len(str2) - 1 To 0 Step -1

a = Asc(LCase(Mid(str2, Len(str2) - i, 1))) '统一求得各个字符的小写状态下的字符所对应的ASCII

a = IIf(a >= 48 And a <= 57, a - 48, a - 87)

'0ASCII码为48,字母aASCII码为97,16进制下的A对应为10进制下的10

'如果a16进制下为 0 9 的数,则-------

'如果a16进制下为 a f 的数,则-------

k = k + (16 ^ i) * a '累加,就像 12345=1*10^4+2*10^3+3*10^2+4*10^1+5*1^0

Next

HexToDec = k '得到的这个返回值 K 就是转换后的10进制数

End Function

'10进制转换成16进制数

Public Function DecToHex(X As Long) As String

Dim a As String

Dim r As String

Do While X > 0

r = X Mod 16

X = X / 16

r = IIf(r > 9, Chr(Asc(r - 9) + 16), r)

'如果这里不减9,一旦r11,12,13,14,15时,就只得到 1 ASCII码值,得到了一个错误的结果。

a = r + a

<place w:st="on"><b style="mso-bidi-font-weight: normal"><span lang="EN-US" style="FONT-SIZE: 14pt; COLOR: black; mso-bidi-font-size: 12.0pt">Loop</span></b></place>

DecToHex = a

End Function

'10进制转换为8进制

Public Function DecToOct(dec As Long) As String

DecToOct = ""

Do While dec > 0

DecToOct = (dec Mod 8) & DecToOct

dec = dec / 8

<place w:st="on">Loop</place>

End Function

'8进制转换为10进制

Public Function OctToDec(str2 As String) As Long

Dim i As Long, a As Variant, k As Long

k = 0

For i = Len(str2) - 1 To 0 Step -1

a = Asc(Mid(str2, Len(str2) - i, 1)) '统一求得各个字符的小写状态下的字符所对应的ASCII

a = a - 48

k = k + (8 ^ i) * a '累加,就像 12345=1*10^4+2*10^3+3*10^2+4*10^1+5*1^0

Next

OctToDec = k '得到的这个返回值 K 就是转换后的10进制数

End Function

'8进制转换为16进制

Public Function OctToHex(Oct As String) As String

Dim dec As Long

dec = OctToDec(Oct) '8进制转10进制

OctToHex = DecToHex(dec) ' 10进制转16进制

End Function

'8进制转为2进制

Public Function OctToBin(Oct As String) As String

Dim dec As Long

dec = OctToDec(Oct) '8进制转10进制

OctToBin = DecToBin(dec) ' 10进制转2进制

End Function

'16进制转为8进制

Public Function HexToOct(Hex As String) As String

Dim dec As Long

dec = HexToDec(Hex) '16进制转10进制

HexToOct = DecToOct(dec) '10进制转8进制

End Function

'16进制转为2进制

Public Function HexToBin(Hex As String) As String

Dim dec As Long

dec = HexToDec(Hex) '16进制转10进制

HexToBin = DecToBin(dec) '10进制转2进制

End Function

'2进制转化为16进制

Public Function BinToHex(bin As String) As String

Dim dec As Long

dec = BinToDec(bin) '2进制转为10进制

BinToHex = DecToHex(dec) '10进制转为16进制

End Function

'2进制转化为8进制

Public Function BinToOct(bin As String) As String

Dim dec As Long

dec = BinToDec(bin) '2进制转化为10进制

BinToOct = DecToOct(dec) '10进制转化为8进制

End Function

分享到:
评论

相关推荐

    2进制,16进制,10进制相互转化的c++算法

    2进制,16进制,10进制相互转化的c++算法 可以实现小数,负数的转化

    十六进制与有符号十进制转换

    16进制与有符号10进制间的相互转换,支持16进制数转换为有符号10进制数,或将有符号10进制转换为16进制数,可选包含1、2、4、8字节。

    16进制与浮点数相互转换

    16进制与浮点数相互转换

    进制转换算法

    *一个进位制转换的的小程序,... * 2,8,16与10进制,以及10进制与 2,8,16进制的相互转换 *如果要将一个二进制直接转换为 8或16进制可以先将2进制转换为10进制,再由10 *进制转换为 8或16进制,其他进制的相互转换同理

    IEEE754浮点数与十六进制数转换器源码

    自己用Qt5.4.1的Qt Creator开发的IEEE754浮点数与十六进制数转换器,可以供Qt初学者学习槽函数的用法,也可以学习IEEE754浮点数与十六进制数转换的算法。两个文本框关联,实时将浮点数与十六进制数互相转换,代码...

    IEE754的C++转换(将16进制转换成浮点型)

    C++代码将16进制数转换成浮点型数。完整代码,可直接运行。

    数据结构课实验_2-16进制相互转化.zip

    数据结构可小实验,简单的2-16进制相互转化算法,终端显示 压缩包包含:一个cpp文件,一个电话簿,可直接编译运行

    Java进制/时间/日期/字符串/流算法大全

    Java 的16 进制与字符串的相互转换函数 JAVA 时间格式化处理 将毫秒转化为日期 文本的倒序输出 判断一个数字是奇数还是偶数 用Hibernate 实现分页 35 选7 彩票程序 获取GMT8 时间 中文乱码转换 Big5 字与Unicode 的...

    pb (powerbuilder) 编写的自动转台控制测试(232),包含浮点数与十六进制数互换功能

    浮点数与十六进制数互换功能算法有点问题,我已经对算法进行了更改,但是最近太忙没有时间整理,过段时间我整理成一个转换软件,包括单精度、双精度、扩展双精度浮点数与十六进制相互转换的功能,带源码,敬请关注

    西门子PLC数据格式转换控件

    西门子PLC数据格式转换控件,有源代码,VB控件,算法包括二进制,16进制,8进制,10进制之间的数据相互转换,还有西门子PLC浮点数和浮点数32位二进制表示法之间的相互转换等,算法丰富,可用于单片机和PC通讯等等。

    java 算法大全 java

    java 算法大全 java16进制与字符串的相互转换函数

    2022年单片机原理及接口技术-4.ppt

    本资源摘要信息涵盖了微型计算机基础知识,包括计算机中的数制及相互转换、二进制数的运算、带符号数的表示、定点数和浮点数、BCD码和ASCII码等。 计算机中的数制及相互转换是计算机科学的基础知识之一。数制是指...

    小甲鱼_数据结构与算法(98集全)

    画51_树、森林及二又树的相互转换. mp452_赫夫曼树. mp453_赫夫曼编码. mp4 四54_赫夫曼编码C语言实现. mp4口55_图. mp4 逾56_图的定义与术语2. mp457_图的存储结构. mp4 58_图的存储结构(邻接表) . mp4 59...

    java 算法

    内容包括:Java的16进制与字符串的相互转换函数 JAVA时间格式化处理 ,将毫秒转化为日期, 文本的倒序输出 ,判断一个数字是奇数还是偶数 ,用Hibernate实现分页, 35选7彩票程序 ,获取GMT8时间, 中文乱码转换 ,...

    JAVA算法大全

    本资源是关于JAVA算法的详细介绍,涵盖了十六进制与字符串的相互转换、CRC16校验算法等多种算法。下面是对这些算法的详细解释: 一、十六进制与字符串的相互转换 在JAVA中,十六进制与字符串的相互转换是非常常见...

    java版的算法大全

    Java的16进制与字符串的相互转换函数 JAVA时间格式化处理 将毫秒转化为日期 文本的倒序输出 判断一个数字是奇数还是偶数 35选7彩票程序 中文乱码转换

    step7编程语言与指令.doc

    其中,梯形图 LD、语句表 IL 和功能块图 FBD 是 3 种根本编程语言,可以相互转换。 1.指令表 IL(Instruction list) 指令表 IL 是一种低级编程语言,使用符号来表示指令。它是 STEP7 编程语言中的基本语言,其他...

    汇编实现九九乘法表输出.pdf

    同时还设计到数制的转换问题,内存中的数据是16进制,而我们习惯看到的是10进制数,通过16进制转换成10进制,在转成通用ASCLL码输出显示,同时还用到DOS的中断调用。 四、程序流程图 该程序流程图主要展示了程序的...

    计算机网络试题(16期中考试)---答案.doc

    9. 采用相位振幅调制 PAM 技术,可以提高数据传输速率,例如采用 8 种相位,每种相位取 2 种幅度值,可使一个码元(Hz)表示的二进制数的位数为 4 位。相位振幅调制 PAM 技术是一种数据传输技术,能够提高数据传输...

Global site tag (gtag.js) - Google Analytics