VB6 字符串和16进制互转换

本文分享了两个实用的VB函数,用于实现字符串与16进制的互相转换,特别适用于中文编码的处理,使中文写入IC卡变得更加便捷。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自己写的两个函数,用于字符串和16进制互转换的,支持中文转换,中文编码写入IC卡非常方便

 

Public Function StrToHex(ByVal strS As String) As String
'将字符串转换为16进制
    Dim abytS() As Byte
    Dim bytTemp As Byte
    Dim strTemp As String
    Dim lLocation As Long
    abytS = StrConv(strS, vbFromUnicode)
    For lLocation = 0 To UBound(abytS)
        bytTemp = abytS(lLocation)
        strTemp = Hex(bytTemp)
        strTemp = Right("00" & strTemp, 2)
        StrToHex = StrToHex & strTemp
    Next lLocation
    StrToHex = StrToHex
End Function

Public Function HexToStr(str As String) As String
'将16进制转换为字符串
    Dim rst() As Byte
    Dim i As Long, j As Long, strlong As Long
    strlong = Len(str)
    ReDim rst(strlong \ 2)
    For i = 0 To strlong - 1 Step 2
        Dim tmp As Long
        rst(i / 2) = Val("&H" & Mid(str, i + 1, 2))
    Next
    HexToStr = StrConv(rst, vbUnicode)
End Function
在 Visual Basic 6 (VB6) 中,将字符串转换为十六进制表示的形式是相对简单的任务。这可以通过遍历每个字符并将它们对应的 ASCII 或 Unicode 值转换为十六进制来实现。下面是具体的方法示例代码。 ### 将字符串16进制的方式 #### 方法一:逐个字符转换(基于ASCII值) 此方法适用于单字节字符集(如英文、数字其他基本符号)。对于多字节字符(如汉字等),这种方法只适用其内部编码的第一个字节。 ##### 示例代码: ```vb Function StrToHexAscii(inputString As String) As String Dim result As String Dim i As Integer For i = 1 To Len(inputString) ' 获取当前字符的 ASCII 码并转换为两位数的十六进制格式 result = result & Right$("0" & Hex$(Asc(Mid$(inputString, i, 1))), 2) Next i StrToHexAscii = result End Function Sub TestStrToHexAscii() Dim testStr As String testStr = "Hello" MsgBox StrToHexAscii(testStr) ' 输出: 48656C6C6F End Sub ``` #### 方法二:逐个字符转换(基于Unicode值) 如果你希望包含所有可能的字符(包括多字节字符)而不仅仅是单字节字符,则应使用 `AscW` 函数获取完整的 Unicode 编码点。 ##### 示例代码: ```vb Function StrToHexUnicode(inputString As String) As String Dim result As String Dim i As Integer For i = 1 To Len(inputString) ' 获取当前字符的 Unicode 码并转换为四位数的十六进制格式 result = result & Format(Hex$(AscW(Mid$(inputString, i, 1))), "0000") Next i StrToHexUnicode = result End Function Sub TestStrToHexUnicode() Dim testStr As String testStr = "你好" MsgBox StrToHexUnicode(testStr) ' 输出类似: 4ECA4F60 (取决于具体的Unicode编码) End Sub ``` 以上两种方法分别针对不同类型的输入数据进行了优化。第一种更适合用于处理纯文本中的普通字符,第二种则能正确显示所有的 Unicode 字符。 ### 注意事项 - 如果你的字符串中有非 ASCII 的特殊字符或国际化字符,请确保选用合适的函数 (`AscW` 对于 Unicode 更加可靠),以免丢失信息。 - 十六进制输出可以选择大写还是小写字母形式,默认情况下上述例子会生成大写的 A-F。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值