不知道是不是VB的Bug? ?format("1a","00")00.....?format("12a","00")00?format("13a","00")01.....?format("23a","00")01 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 楼主没有弄明白 format 函数的用法建议去 msdn 上查清楚 format 函数对各种数据类型的表达式用 format 函数后的返回值 你很不幸,在数字后面加a, 还要进行格式化,记住加a和加p还要格式化时,他会按照时间进行处理。看下面的过程。?format("1a","00.00000000")00.04166667?format(1/24,"00.00000000")00.04166667?format("2a","00.00000000")00.08333333?format("3a","00.00000000")00.12500000?format("4a","00.00000000")00.16666667?format("1p","00.00000000")00.54166667建议:如果要表示字符请使用:format("1b","00")或者format("1a","##") xh_mlj(曦恒) 说:我是从串口设备中读数据,得到的是十六进制数,如果得到的数据是一位,则在数据前面加“0”。从串口设备读数据应该是一个数组或字符串,不知道你是那一种,你说得到的数据是一位时,前面加“0”,那多了可能有几位 2位 or 3位。 &H1A 吧? 我倒~VB的16进制表示为&H前缀,C++那个是0x qyii(没读过大学)&H1A 吧? 我倒~VB的16进制表示为&H前缀,C++那个是0x诚然VB的16进制是&H,但从串口读出的数据是不会自动加上&H的,我们的xh_mlj(曦恒)在拆分出16进制数以前就已经出错了,何况他可能是用16进制传递BCD码或字符串呢。 Private Sub MSComm1_OnComm() On Error Resume Next Dim Buffer() As Byte Dim BufferTemp As Variant Dim StrData As String Dim StrHexData As String '延时 Dim Start Start = Now() '设定开始时间 Do DoEvents Loop Until Now() > DateAdd("s", 2, Start) With MSComm1 Select Case .CommEvent Case comEvReceive .RThreshold = 0 ReDim Buffer(.InBufferCount) As Byte BufferTemp = .Input Buffer = BufferTemp For IntI = 0 To UBound(Buffer()) StrData = Hex(Buffer(IntI)) StrHexData = StrHexData & Format(StrData, "00") Next Case comEvSend End Select .RThreshold = 1 End With End Sub Buffer(0) -- 2Buffer(1) -- 1Buffer(2) -- 118Buffer(3) -- 48Buffer(4) -- 49Buffer(5) -- 96Buffer(6) -- 0Buffer(7) -- 0Buffer(8) -- 0Buffer(9) -- 3Buffer(10) -- 48Buffer(11) -- 49Buffer(12) -- 54Buffer(13) -- 57Buffer(14) -- 48Buffer(15) -- 48Buffer(16) -- 48Buffer(17) -- 48Buffer(18) -- 2Buffer(19) -- 0Buffer(20) -- 48Buffer(21) -- 60Buffer(22) -- 5Buffer(23) -- 128Buffer(24) -- 32Buffer(25) -- 192Buffer(26) -- 16Buffer(27) -- 5Buffer(28) -- 48Buffer(29) -- 48Buffer(30) -- 65Buffer(31) -- 48Buffer(32) -- 48Buffer(33) -- 48Buffer(34) -- 48Buffer(35) -- 48Buffer(36) -- 48Buffer(37) -- 48Buffer(38) -- 48Buffer(39) -- 48Buffer(40) -- 48Buffer(41) -- 48Buffer(42) -- 48Buffer(43) -- 55Buffer(44) -- 48Buffer(45) -- 48Buffer(46) -- 48Buffer(47) -- 48Buffer(48) -- 48Buffer(49) -- 49Buffer(50) -- 48Buffer(51) -- 57Buffer(52) -- 49Buffer(53) -- 52Buffer(54) -- 48Buffer(55) -- 53Buffer(56) -- 48Buffer(57) -- 57Buffer(58) -- 48Buffer(59) -- 54Buffer(60) -- 49Buffer(61) -- 54Buffer(62) -- 57Buffer(63) -- 57Buffer(64) -- 48Buffer(65) -- 51Buffer(66) -- 48Buffer(67) -- 50Buffer(68) -- 49Buffer(69) -- 48Buffer(70) -- 48Buffer(71) -- 52Buffer(72) -- 48Buffer(73) -- 48Buffer(74) -- 55Buffer(75) -- 57Buffer(76) -- 54Buffer(77) -- 56Buffer(78) -- 56Buffer(79) -- 48Buffer(80) -- 55Buffer(81) -- 48Buffer(82) -- 55Buffer(83) -- 48Buffer(84) -- 50Buffer(85) -- 53Buffer(86) -- 53Buffer(87) -- 54Buffer(88) -- 54Buffer(89) -- 54Buffer(90) -- 54Buffer(91) -- 61Buffer(92) -- 57Buffer(93) -- 57Buffer(94) -- 48Buffer(95) -- 51Buffer(96) -- 53Buffer(97) -- 50Buffer(98) -- 48Buffer(99) -- 48Buffer(100) -- 48Buffer(101) -- 48Buffer(102) -- 48Buffer(103) -- 48Buffer(104) -- 49Buffer(105) -- 49Buffer(106) -- 63Buffer(107) -- 0Buffer(108) -- 0Buffer(109) -- 0Buffer(110) -- 0Buffer(111) -- 0Buffer(112) -- 48Buffer(113) -- 48Buffer(114) -- 48Buffer(115) -- 48Buffer(116) -- 49Buffer(117) -- 53Buffer(118) -- 49Buffer(119) -- 54Buffer(120) -- 49Buffer(121) -- 48Buffer(122) -- 53Buffer(123) -- 49Buffer(124) -- 49Buffer(125) -- 48Buffer(126) -- 48Buffer(127) -- 52Buffer(128) -- 53Buffer(129) -- 49Buffer(130) -- 49Buffer(131) -- 48Buffer(132) -- 48Buffer(133) -- 50Buffer(134) -- 55Buffer(135) -- 77Buffer(136) -- 130Buffer(137) -- 114Buffer(138) -- 118Buffer(139) -- 133Buffer(140) -- 188Buffer(141) -- 55Buffer(142) -- 55Buffer(143) -- 0Buffer(144) -- 38Buffer(145) -- 48Buffer(146) -- 48Buffer(147) -- 48Buffer(148) -- 48Buffer(149) -- 48Buffer(150) -- 50Buffer(151) -- 48Buffer(152) -- 48Buffer(153) -- 48Buffer(154) -- 48Buffer(155) -- 52Buffer(156) -- 49Buffer(157) -- 48Buffer(158) -- 48Buffer(159) -- 48Buffer(160) -- 48Buffer(161) -- 48Buffer(162) -- 48Buffer(163) -- 32Buffer(164) -- 32Buffer(165) -- 32Buffer(166) -- 32Buffer(167) -- 32Buffer(168) -- 32Buffer(169) -- 32Buffer(170) -- 32Buffer(171) -- 247Buffer(172) -- 55Buffer(173) -- 18Buffer(174) -- 173Buffer(175) -- 228Buffer(176) -- 127Buffer(177) -- 17Buffer(178) -- 214Buffer(179) -- 3Buffer(180) -- 235 上面是放在数组里的数据,我想要得到的是:02 01 76 30 31 60 00 00 00 03 30 31 36 39 30 30 30 30 02 00 30 3C 05 80 20 C0 10 05 30 30 41 30 30 30 30 30 30 30 30 30 30 30 30 37 30 30 30 30 30 31 30 39 31 34 30 35 30 39 30 36 31 36 39 39 30 33 30 32 31 30 30 34 30 30 37 39 36 38 38 30 37 30 37 30 32 35 35 36 36 36 36 3D 39 39 30 33 35 32 30 30 30 30 30 30 31 31 3F 00 00 00 00 00 30 30 30 30 31 35 31 36 31 30 35 31 31 30 30 34 35 31 31 30 30 32 37 4D 82 72 76 85 BC 37 37 00 26 30 30 30 30 30 32 30 30 30 30 34 31 30 30 30 30 30 30 20 20 20 20 20 20 20 20 F7 37 12 AD E4 7F 11 D6 03 EB也就是把数组里的数据转换成十六进制,如果是一位,例如 Buffer(0)=2 转换后为 02.我现在的程序是这样写的:For IntI = 0 To UBound(Buffer()) StrData = Hex(Buffer(IntI)) If Len(StrData) = 1 Then StrHexData = StrHexData & "0" & StrData Else StrHexData = StrHexData & StrData End If Next我原来用Format格式化数据时发现的问题,这组数据里没有 1A ,但数据是不定的,下组数据里可能就会出现! strhexdata=iif(len(StrData)=1,"0" & strdata,strdata) ASP url重写ASP伪静态html实现方法 Winsock控件可以做异步事件吗? 请问adode是个什么控件啊。 还是VC的DLL参数定义转成VB的参数问题(在线等候) Excel没有权限! 怎样让TextBox的光标指向当前位置? 初学vb,请问两个问题: WORD生成完全通用组件今日上市 请问关于通过WINSOCK发送图片的方法。 为什么在mshflexgrid中显示中文和显示数字时的方向不同! VB中的data控件简单问题 还是那个关于调用记事本的问题,再次麻烦高手大哥们
建议去 msdn 上查清楚 format 函数对各
种数据类型的表达式用 format 函数后的返回值
?format("1a","00.00000000")
00.04166667
?format(1/24,"00.00000000")
00.04166667
?format("2a","00.00000000")
00.08333333
?format("3a","00.00000000")
00.12500000
?format("4a","00.00000000")
00.16666667
?format("1p","00.00000000")
00.54166667建议:
如果要表示字符请使用:
format("1b","00")
或者
format("1a","##")
我是从串口设备中读数据,得到的是十六进制数,如果得到的数据是一位,则在数据前面加“0”。从串口设备读数据应该是一个数组或字符串,不知道你是那一种,你说得到的数据是一位时,前面加“0”,那多了可能有几位 2位 or 3位。
&H1A 吧? 我倒~
VB的16进制表示为&H前缀,C++那个是0x诚然VB的16进制是&H,但从串口读出的数据是不会自动加上&H的,我们的xh_mlj(曦恒)在拆分出16进制数以前就已经出错了,何况他可能是用16进制传递BCD码或字符串呢。
On Error Resume Next
Dim Buffer() As Byte
Dim BufferTemp As Variant
Dim StrData As String
Dim StrHexData As String
'延时
Dim Start
Start = Now()
'设定开始时间
Do
DoEvents
Loop Until Now() > DateAdd("s", 2, Start)
With MSComm1
Select Case .CommEvent
Case comEvReceive
.RThreshold = 0
ReDim Buffer(.InBufferCount) As Byte
BufferTemp = .Input
Buffer = BufferTemp
For IntI = 0 To UBound(Buffer())
StrData = Hex(Buffer(IntI))
StrHexData = StrHexData & Format(StrData, "00")
Next
Case comEvSend
End Select
.RThreshold = 1
End With
End Sub
Buffer(1) -- 1
Buffer(2) -- 118
Buffer(3) -- 48
Buffer(4) -- 49
Buffer(5) -- 96
Buffer(6) -- 0
Buffer(7) -- 0
Buffer(8) -- 0
Buffer(9) -- 3
Buffer(10) -- 48
Buffer(11) -- 49
Buffer(12) -- 54
Buffer(13) -- 57
Buffer(14) -- 48
Buffer(15) -- 48
Buffer(16) -- 48
Buffer(17) -- 48
Buffer(18) -- 2
Buffer(19) -- 0
Buffer(20) -- 48
Buffer(21) -- 60
Buffer(22) -- 5
Buffer(23) -- 128
Buffer(24) -- 32
Buffer(25) -- 192
Buffer(26) -- 16
Buffer(27) -- 5
Buffer(28) -- 48
Buffer(29) -- 48
Buffer(30) -- 65
Buffer(31) -- 48
Buffer(32) -- 48
Buffer(33) -- 48
Buffer(34) -- 48
Buffer(35) -- 48
Buffer(36) -- 48
Buffer(37) -- 48
Buffer(38) -- 48
Buffer(39) -- 48
Buffer(40) -- 48
Buffer(41) -- 48
Buffer(42) -- 48
Buffer(43) -- 55
Buffer(44) -- 48
Buffer(45) -- 48
Buffer(46) -- 48
Buffer(47) -- 48
Buffer(48) -- 48
Buffer(49) -- 49
Buffer(50) -- 48
Buffer(51) -- 57
Buffer(52) -- 49
Buffer(53) -- 52
Buffer(54) -- 48
Buffer(55) -- 53
Buffer(56) -- 48
Buffer(57) -- 57
Buffer(58) -- 48
Buffer(59) -- 54
Buffer(60) -- 49
Buffer(61) -- 54
Buffer(62) -- 57
Buffer(63) -- 57
Buffer(64) -- 48
Buffer(65) -- 51
Buffer(66) -- 48
Buffer(67) -- 50
Buffer(68) -- 49
Buffer(69) -- 48
Buffer(70) -- 48
Buffer(71) -- 52
Buffer(72) -- 48
Buffer(73) -- 48
Buffer(74) -- 55
Buffer(75) -- 57
Buffer(76) -- 54
Buffer(77) -- 56
Buffer(78) -- 56
Buffer(79) -- 48
Buffer(80) -- 55
Buffer(81) -- 48
Buffer(82) -- 55
Buffer(83) -- 48
Buffer(84) -- 50
Buffer(85) -- 53
Buffer(86) -- 53
Buffer(87) -- 54
Buffer(88) -- 54
Buffer(89) -- 54
Buffer(90) -- 54
Buffer(91) -- 61
Buffer(92) -- 57
Buffer(93) -- 57
Buffer(94) -- 48
Buffer(95) -- 51
Buffer(96) -- 53
Buffer(97) -- 50
Buffer(98) -- 48
Buffer(99) -- 48
Buffer(100) -- 48
Buffer(101) -- 48
Buffer(102) -- 48
Buffer(103) -- 48
Buffer(104) -- 49
Buffer(105) -- 49
Buffer(106) -- 63
Buffer(107) -- 0
Buffer(108) -- 0
Buffer(109) -- 0
Buffer(110) -- 0
Buffer(111) -- 0
Buffer(112) -- 48
Buffer(113) -- 48
Buffer(114) -- 48
Buffer(115) -- 48
Buffer(116) -- 49
Buffer(117) -- 53
Buffer(118) -- 49
Buffer(119) -- 54
Buffer(120) -- 49
Buffer(121) -- 48
Buffer(122) -- 53
Buffer(123) -- 49
Buffer(124) -- 49
Buffer(125) -- 48
Buffer(126) -- 48
Buffer(127) -- 52
Buffer(128) -- 53
Buffer(129) -- 49
Buffer(130) -- 49
Buffer(131) -- 48
Buffer(132) -- 48
Buffer(133) -- 50
Buffer(134) -- 55
Buffer(135) -- 77
Buffer(136) -- 130
Buffer(137) -- 114
Buffer(138) -- 118
Buffer(139) -- 133
Buffer(140) -- 188
Buffer(141) -- 55
Buffer(142) -- 55
Buffer(143) -- 0
Buffer(144) -- 38
Buffer(145) -- 48
Buffer(146) -- 48
Buffer(147) -- 48
Buffer(148) -- 48
Buffer(149) -- 48
Buffer(150) -- 50
Buffer(151) -- 48
Buffer(152) -- 48
Buffer(153) -- 48
Buffer(154) -- 48
Buffer(155) -- 52
Buffer(156) -- 49
Buffer(157) -- 48
Buffer(158) -- 48
Buffer(159) -- 48
Buffer(160) -- 48
Buffer(161) -- 48
Buffer(162) -- 48
Buffer(163) -- 32
Buffer(164) -- 32
Buffer(165) -- 32
Buffer(166) -- 32
Buffer(167) -- 32
Buffer(168) -- 32
Buffer(169) -- 32
Buffer(170) -- 32
Buffer(171) -- 247
Buffer(172) -- 55
Buffer(173) -- 18
Buffer(174) -- 173
Buffer(175) -- 228
Buffer(176) -- 127
Buffer(177) -- 17
Buffer(178) -- 214
Buffer(179) -- 3
Buffer(180) -- 235
02 01 76 30 31 60 00 00 00 03 30 31 36 39 30 30 30 30 02 00 30 3C 05 80 20 C0 10 05 30 30 41 30 30 30 30 30 30 30 30 30 30 30 30 37 30 30 30 30 30 31 30 39 31 34 30 35 30 39 30 36 31 36 39 39 30 33 30 32 31 30 30 34 30 30 37 39 36 38 38 30 37 30 37 30 32 35 35 36 36 36 36 3D 39 39 30 33 35 32 30 30 30 30 30 30 31 31 3F 00 00 00 00 00 30 30 30 30 31 35 31 36 31 30 35 31 31 30 30 34 35 31 31 30 30 32 37 4D 82 72 76 85 BC 37 37 00 26 30 30 30 30 30 32 30 30 30 30 34 31 30 30 30 30 30 30 20 20 20 20 20 20 20 20 F7 37 12 AD E4 7F 11 D6 03 EB也就是把数组里的数据转换成十六进制,如果是一位,例如 Buffer(0)=2 转换后为 02.我现在的程序是这样写的:
For IntI = 0 To UBound(Buffer())
StrData = Hex(Buffer(IntI)) If Len(StrData) = 1 Then
StrHexData = StrHexData & "0" & StrData
Else
StrHexData = StrHexData & StrData
End If
Next我原来用Format格式化数据时发现的问题,这组数据里没有 1A ,但数据是不定的,下组数据里可能就会出现!