紧急:variant 数据类型转换到 Byte 时的问题

carol1980 2006-07-10 11:25:17
谢谢看贴地朋友们~ 我有一个比较紧急的小问题,代码如下:

Private Sub Form_Load()
Dim a As Variant
Dim b() As Byte
Dim i As Integer

a = "hello"
ReDim b(10)

b = a
For i = 0 To 9
Debug.Print ("b" & i & "= " & b(i))
Next i

End Sub

输出的结果是:

b0= 104
b1= 0
b2= 101
b3= 0
b4= 108
b5= 0
b6= 108
b7= 0
b8= 111
b9= 0

我的问题是,是不是因为variant在vb6下是16位的,所以多出这么多的0。
怎样才能顺利得到下面的结果:

!注意! 要求可以输出ascii 0-255 的值的,谢谢~
b0= 104
b1= 101
b2= 108
b3= 108
b4= 111

谢谢大家拉~ 寻求优美简洁地程序。
...全文
183 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
nevsong 2006-07-12
  • 打赏
  • 举报
回复
可以自己写一个转换函数
carol1980 2006-07-11
  • 打赏
  • 举报
回复
是啊,我要0-255的ASCII的~
一笑拔剑 2006-07-11
  • 打赏
  • 举报
回复
好像这样转换后是字符吧
不合适
viena 2006-07-11
  • 打赏
  • 举报
回复
strConv(a,vbFromUnicode)
carol1980 2006-07-11
  • 打赏
  • 举报
回复
nevsong(绿水青山) 有没有相应的函数或者好一点的方法来转换呢?

我知道一个与此相关的函数 strConv 但好像不适用与这个
viena 2006-07-11
  • 打赏
  • 举报
回复
b = strConv(a,vbFromUnicode)
carol1980 2006-07-11
  • 打赏
  • 举报
回复
继续问一下~
nevsong 2006-07-10
  • 打赏
  • 举报
回复
应该是 一个字母分 高低两个直接保存 的, 而英文字母的高字节是00,低字节就是你输出的结果!

b(i*2)=低字节
b(i*2+1)=高直接

For i = 0 To 9 step 2
Debug.Print ("b" & i & "= " & b(i))
Next i

7,764

社区成员

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

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