刚才字符串存入数组贴给的分数太少,另外再发一次,不够分可另外再加

muders 2003-09-12 11:40:58
我想在0-255的数值范围内,将类似"D" & Chr(7) & Chr(181) & Chr(240) & Chr(45)的字符串存入字节数组,使得数组内数据为a(0)=Asc("D"),a(1)=7,a(2)=181,a(3)=240,a(4)=45,该如何做?
我用了如下方法
Dim a() as byte
s="D" & Chr(7) & Chr(181) & Chr(240) & Chr(45)
a = StrConv(s, vbFromUnicode)
取到的a内数据为a(0)=Asc("D"),a(1)=7,a(2)=0,a(3)=0,a(4)=45
请高手赐教
...全文
85 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
muders 2003-09-14
  • 打赏
  • 举报
回复
算了,结贴吧,用ChrW(i),才能取到正确的值
yijiansong 2003-09-12
  • 打赏
  • 举报
回复
UP
muders 2003-09-12
  • 打赏
  • 举报
回复
各位的方法还是不能避免大于127的数据取值为0,再等
stonegoldaustin 2003-09-12
  • 打赏
  • 举报
回复
有一点错误
For j = LBound(arrA) To UBound(arrA)
Debug.Print arrA(j)
Next

改为
For j = LBound(arrA) To UBound(arrA) - 1
Debug.Print arrA(j)
Next
但如果你的模块中有"Option Base 1"则不用改.
jlum99 2003-09-12
  • 打赏
  • 举报
回复
Dim s As String
Dim bDist() As Byte
bDist = s
stonegoldaustin 2003-09-12
  • 打赏
  • 举报
回复
Dim arrA()
s = "D" & Chr(7) & Chr(181) & Chr(240) & Chr(45)
ReDim arrA(Len(s)) As Variant
For i = 0 To Len(s) - 1
arrA(i) = Mid(s, i + 1, 1)
Next
For j = LBound(arrA) To UBound(arrA)
Debug.Print arrA(j)
Next
muders 2003-09-12
  • 打赏
  • 举报
回复
简而言之,如果
Dim s As String
Dim i As Integer
s=Chr(i)
如何处理s,才能取出s对应的那个i的值(只处理s,不通过i,i>127,i<256),使取出的值为i的真实值而不是0或者其他
rainstormmaster 2003-09-12
  • 打赏
  • 举报
回复
CopyMemory
northwolves 2003-09-12
  • 打赏
  • 举报
回复
asc()
stonegoldaustin 2003-09-12
  • 打赏
  • 举报
回复
那你用Asc(Chr(i))

就可以取到i的值了
muders 2003-09-12
  • 打赏
  • 举报
回复
不能避免i大于127时的取到的数据为0
stonegoldaustin 2003-09-12
  • 打赏
  • 举报
回复
你的问题是什么??
是数组赋值?还是什么?
什么叫"不能避免大于127的数据取值为0"??

问题提得不清楚,怎么帮你呢?
x8bits 2003-09-12
  • 打赏
  • 举报
回复
Private Declare Sub CopyMemory _
Lib "kernel32" Alias "RtlMoveMemory" ( _
ByRef pDst As Any, _
ByRef pSrc As Any, _
ByVal ByteLen As Long)

Dim a() As Integer
Dim s As String

s = "D" & ChrW(7) & ChrW(181) & ChrW(240) & ChrW(45)
ReDim a(Len(s))
CopyMemory a(0), ByVal StrPtr(s), Len(s) * 2
longfeisoft 2003-09-12
  • 打赏
  • 举报
回复
不用数组用 collection 对象

Dim clcWord As Collection
Set clcWord = New Collection
clcWord.Add "D", "1"
clcWord.Add Chr(7), "2"
clcWord.Add Chr(181), "3"
clcWord.Add Chr(240), "4"
clcWord.Add Chr(45), "5"

MsgBox clcWord("5")

Set clcWord = Nothing

这样就可以了。但是ASCII码不是都是可见的,chr(181) 就不可见,有问题你再问

7,763

社区成员

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

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