2、8、10、16进制数相互转换的12种算法
来源:互联网 发布:js获取单选框选中状态 编辑:程序博客网 时间:2024/05/16 14:41
Option Explicit
'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
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)
'0的ASCII码为48,字母a的ASCII码为97,而16进制下的A对应为10进制下的10
'如果a在16进制下为 0 至 9 的数,则-------
'如果a在16进制下为 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,一旦r为11,12,13,14,15时,就只得到 1 的ASCII码值,得到了一个错误的结果。
a = r + a
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
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、8、10、16进制数相互转换的12种算法
- 进制数转换器的VB算法实现(2/8/10/16进制数可以相互转换)
- C# 2、10、16进制的相互转换
- 10进制与2进制,8进制,16进制的相互转换
- 2进制与8,16,10进制的相互转换(带小数点)
- JS实现2,8,10,16进制的相互转换
- 字节数组、16进制数的字符串的相互转换
- 每日一算法--java的16进制与字符串的相互转换函数
- UNICODE(UTF-16)与UTF-8编码的相互转换
- UTF-8、UTF-16、UTF-32编码的相互转换
- UNICODE(UTF-16)与UTF-8编码的相互转换
- UTF-8、UTF-16、UTF-32编码的相互转换
- 16进制与10进制的相互转换
- C/C++里string与int的相互转换算法
- 遗传算法之基因型与表现型的相互转换
- 数制间的相互转换--栈--《数据结构与算法》
- 10进制数和16进制字符串 相互转换
- 1.不同进制数之间的相互转换
- PostgreSQL8.3.X新特性-全文搜索(二)
- Tomcat6.0与windows 2003 server 的IIS服务器集成
- Accessing Windows Shares from OpenSolaris
- PostgreSQL8.3.X新特性-全文搜索(三)
- apache.2.2.4+tomcat6配置方案
- 2、8、10、16进制数相互转换的12种算法
- PostgreSQL8.3.X新特性-全文搜索(四)
- C# 中常见的比较(完善中)
- PostgreSQL8.3.X新特性-全文搜索(五)
- DAO问题:Unrecognized database format
- Netbeans 绑定下拉列表方法
- 怎得到年、月、日?
- 工作队列的实现
- 类的构造器