VB 字符串 转为十六进制

是这样的,我有一个adata() as string ,
aData(0) = "A0"
aData(1) = "3"
aData(2) = "82"
aData(3) = "AA"
想转化为bdata() as byte
bData(0) = &HA0
bData(1) = &H3
bData(2) = &H82
bData(3) = &HAA
应该怎么做,或者说,我想把字符串的“123ABC”,转化为十六进制的123ABC,怎么做?

VB字符串可通过使用StrConv 函数,将字符串由 Unicode 转成系统的缺省码页后,再获取每个字节的十六进制字符后拼接起来。

StrConv 函数,返回按指定类型转换的 Variant (String)。

实现代码:

Private Sub Command1_Click()
    Dim strSj As String
    Dim strHexSj As String
    Dim i As Long
    Dim bytSj() As Byte
    strSj = "123ABC十六进制"
    bytSj = StrConv(strSj, vbFromUnicode)
    For i = 0 To UBound(bytSj)
        strHexSj = strHexSj & Right("0" & Hex(bytSj(i)), 2)
    Next
    Debug.Print strHexSj
End Sub

vbFromUnicode,将字符串由 Unicode 转成系统的缺省码页。

既可以转换单字节字符也可转换双字节字符。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-02-27
先将字符串前面都加一个&H符号,然后使用Val函数转成十进制,如果要用十六进制显示的话,使用HEX函数
Dim str as string
Dim n as integer
Dim str2 as string

str="A0"
str=str & "&H"
n=val(str) '返回包含于字符串内的数字,val函数能够识别&H符号
str2=Hex(n) '返回代表十六进制数值的 String。本回答被网友采纳
第2个回答  2012-04-19
十六进制是字符串,所以只要在字符串前加十六进制标记就可以了。
bData(0) = “&H” & "A0"
第3个回答  推荐于2016-01-18
bData(0) = CByte("&H" & aData(0))

s = "123ABC"
n = CLng("&H" & s)追问

我想动态的定义一个数组
比如dim adata(N) as byte
类似这样的功能VB能实现么?
然后对数组的各个元素进行赋值,
因为我后面要MSComm1.Output = adata(),所以不能事先定义一个比较大的adata(),多出来的数组元素设备识别不了

追答

可定义动态数组:
Dim adata() as byte
然后即可随时定义它的维数:
ReDim adata(N)

本回答被提问者采纳
相似回答