有一个字符串,内容是16进制的数据和空格
现在我想用MID函数取出字符串中的值
然后FORMAT函数格式化字符串输出
如果字符是1位的,前面补0
类似这样:
字符串——"F 6 C 1 a"
输出效果——"0F 06 0C 01 0A"
但是现在出问题了
6 和1能自动补零,但是字母就不行
话说,我已经把字母转成16进制数值存入数组了,
再读出来显示,可就是不能补0,怎么回事啊!
程序如下:Option ExplicitPrivate Sub Command2_Click()
Dim str As String
Dim arr(4) As Long
Dim i As Integerstr = "F 6 C 10 a"
Text2.Text = ""
For i = 0 To 4
arr(i) = CLng("&H" & Mid(str, i * 2 + 1, 1))
Text2.Text = Text2.Text & Format(Hex(arr(i)), "00") & " "
Next i
End Sub谢谢!!!!
现在我想用MID函数取出字符串中的值
然后FORMAT函数格式化字符串输出
如果字符是1位的,前面补0
类似这样:
字符串——"F 6 C 1 a"
输出效果——"0F 06 0C 01 0A"
但是现在出问题了
6 和1能自动补零,但是字母就不行
话说,我已经把字母转成16进制数值存入数组了,
再读出来显示,可就是不能补0,怎么回事啊!
程序如下:Option ExplicitPrivate Sub Command2_Click()
Dim str As String
Dim arr(4) As Long
Dim i As Integerstr = "F 6 C 10 a"
Text2.Text = ""
For i = 0 To 4
arr(i) = CLng("&H" & Mid(str, i * 2 + 1, 1))
Text2.Text = Text2.Text & Format(Hex(arr(i)), "00") & " "
Next i
End Sub谢谢!!!!
Dim arr As Variant
Dim i As Integer
Dim tmp As Stringstr = "F 6 C 10 a b ef"Text2.Text = ""
arr = Split(str, Chr(32))
For i = 0 To UBound(arr)
tmp = Hex(CLng("&H" & arr(i)))
tmp = IIf(Len(tmp) > 1, tmp, " 0" & tmp)
Text2.Text = Text2.Text & tmp & " "
Next iEnd Sub
Private Sub Command1_Click()
Dim intP As Integer
For intP = 1 To Len(Text1.Text)
Text2.Text = Text2.Text & Right("00" & Mid(Text1.Text, intP, 1), 2)
Next intP
End SubPrivate Sub Form_Load()
Text1.Text = "3AD567"
Text2.Text = ""
End Sub
Dim str As String
Dim arr(4) As Long
Dim i As Integerstr = "F 6 C 10 a"
Text2.Text = ""
For i = 0 To 4
arr(i) = CLng("&H" & Mid(str, i * 2 + 1, 1))
Text2.Text = Text2.Text & right(Format(Hex(arr(i)), "!0@@"),2) & " "
Next i
End Sub
不过还有两个疑问:
1.Format函数里的 "!0@@"是什么意思?有没有相关资料?MSDN上我没有查到
而且我用"!0@@"格式化后显示的字符一个0也没有补了……
后来去掉了一个@,也就是用"!0@"就正常显示补0了
2.你们为什么都用Right函数从右面取值?我刚刚用"!0@"的时候忘了写Right函数
但是也正常显示字符串补0了,和用Right函数的效果是一样的
这有什么差别吗?对我的程序会有什么影响吗?ps. VB新手,谢谢各位的热心+耐心回答!
!0@@是什么意思?@代表空格吗?
可是我又用你说的"!0@@"试了一下,一样不能补0了,而且没个字符之间的空格变成了两个,去掉一个@的话,字符之间的空格就变成一个了。
另外,只有用"!0@"的时候才能正常显示我要的结果。
求!0@的具体含义,我只知道n个0的格式含义……
C里的int型到底对应VB的什么数据类型?
前两天google搜索的时候看到说对应VB的LONG型,但是我传了LONG型参数过去,报错:Type mismatch
然后换各种数据类型都是Type mismatch
具体情况是这样,我用C写了个DLL处理数据,然后用VB调用,显示反馈的数据
然后VB需要传几个参数进去,DLL里定义的参数类型好像分别是
short int 和 unsignged short,或者还有个unsigned int
(系统突然出问题了SourceInsight打不开了,连记事本都打不开了,看不了原文件,貌似要重启)
这几个C里的数据类型在VB里究竟对应什么类型?
找不到合适的类型,总是Type mismatch,真恼火啊!
VC 类型对应 VB
Int Long
short int integer
unsigned short 没有对应的类型,如果数值不大于32767可以使用Integer代替
unsigned int 没有对应的类型,如果数值不大于2^31-1可以使用Long代替
类型传递错误,经常会引起系统崩溃(但有时是数据错位,得不到正确结果)
成功补零,正确显示后,不能点击textBox框修改数据了,一修改就报错
但是没有补零,显示差一点,确可以修改数据,内存里的数据也都是正确的
即想显示效果好看点,又想数据修改都正确,怎么这么困难啊,真是纠结!