重分求购!!!有没有将二进制转换成16进制的函数!!!

cl2002 2002-09-10 12:07:53
同题
...全文
162 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wxqjl007 2002-09-10
  • 打赏
  • 举报
回复
Dim s As String
Dim a As Long

s = "1110001"

For i = 1 To Len(s)
j = Val(Mid(s, i, 1))
If j = 1 Then a = a + 2 ^ (Len(s) - i)
Next

MsgBox Hex(a)
rushing 2002-09-10
  • 打赏
  • 举报
回复
hex
fq1 2002-09-10
  • 打赏
  • 举报
回复
不用,每四位二进制对应一位十六进制,自己编个函数来转不是太困难的事!
Kain 2002-09-10
  • 打赏
  • 举报
回复
应该先过渡到十进制
C2000 2002-09-10
  • 打赏
  • 举报
回复
以下算法不受长度影响:

Private Sub Form_Load()
Dim s As String
s = "100001111000101100011111100000001101001110001"
MsgBox Bin2Hex(s)
End Sub

Private Function Bin2Hex(str1 As String) As String
Dim i As Integer
Dim l As Integer
Dim k As Integer
Dim n As Integer
Dim str2 As String
Dim str3 As String

l = Len(str1)
k = (l + 3) / 4
n = l Mod 4
str3 = ""

For i = 0 To k - 1
If i = 0 Then
str2 = Mid(str1, 1, n)
Else
str2 = Mid(str1, n + 4 * i - 3, 4)
End If

If str2 <> "" Then str3 = str3 & B2H(str2)
Next
Bin2Hex = str3
End Function

Private Function B2H(str4 As String) As String
Dim i As Integer
Dim j As Integer
j = 0
For i = 1 To Len(str4)
j = j + Val(Mid(str4, i, 1)) * 2 ^ (Len(str4) - i)
Next i
B2H = CStr(Hex(j))
End Function
mjs2000 2002-09-10
  • 打赏
  • 举报
回复

好思想
NowCan(能量、激情、雨水、彩虹——雷雨云)
Red_Ice 2002-09-10
  • 打赏
  • 举报
回复
Option Explicit



Private Function Convert(strBinary As String) As String


Dim Chr As String

Dim strChar As String
Dim strTemp As String

Dim intLength1 As Integer
Dim intLength2 As Integer

Dim i As Integer
Dim j As Integer
Dim k As Integer

Dim intTemp As Integer

Chr = "0123456789ABCDEF"
intLength1 = Len(strBinary)

While intLength1 > 0
i = intLength1 - 3
intLength1 = intLength1 - 4

If i < 1 Then
strTemp = Left(strBinary, intLength1 + 4)
Else
strTemp = Mid(strBinary, i, 4)
End If

intLength2 = Len(strTemp)

intTemp = 0
k = 0
For j = intLength2 To 1 Step -1
strChar = Mid(strTemp, j, 1)

'//检查是否为二进制
If strChar <> "1" And strChar <> "0" Then
MsgBox "数据不是二进制"
Exit Function
End If

intTemp = intTemp + Val(strChar) * 2 ^ k
k = k + 1

Next j


Convert = Mid(Chr, intTemp + 1, 1) & Convert

Wend





End Function

Private Sub Command1_Click()
Text2.Text = Convert(Text1.Text)

End Sub


作者:唐宏冰
主页:http://jmtk.xiloo.com
决战单词——让我们告别背单词的苦恼!
NowCan 2002-09-10
  • 打赏
  • 举报
回复
4个二进制转为1个16进制,自己做个表就行了

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧