再问TopHead兄:怎么一个string类型的字符串放到Byte类型的数组中去?

rober 2000-06-01 09:18:00
怎么把字串"你"转回196和227?
也就是说我要把一个string类型的字符串放到Byte类型的数组中去。
比如:
Dim t as string
dim buf(0 to 511) as Byte
t = "abc你好吗?efg"

问题:我怎么把t放到buf中?

...全文
232 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
TopHead 2000-06-02
  • 打赏
  • 举报
回复
dim byt(1) as byte
byt(0)=ascb(midb(strconv("你",vbFromUnicode),1,1))
byt(1)=ascb(midb(strconv("你",vbFromUnicode),2,1))
Janven 2000-06-02
  • 打赏
  • 举报
回复
你观察到的数据没错
“你”字的16进制编码为C4E3(196*227)
但是用这个数是得不到汉字的
WIN95的编码是ASCII,所以能用CHR()来显示
汉字,但是必须为C4E3的原码
即为-(65536-196*227+1)=-15133
CHR(-15133)所显示的字符即是“你”字
现在清楚了吧,快点给分呀!
其实机器监测到的往往都是补码,而编程语言识别的是它们的原码,应该加以转换才能应用,对了Chen_Lin,如果你看到这篇,应该也会有所收获吧。
rober 2000-06-02
  • 打赏
  • 举报
回复
但如果是汉字,怎么用mid()取字符。因为vb把一个汉字的长度当作1。而实际上应为2。
sjxf 2000-06-02
  • 打赏
  • 举报
回复
用一个for循环,用mid()函数取字符,用ASC或ASCW转换
rober 2000-06-02
  • 打赏
  • 举报
回复
多谢TopHead兄和Janven兄!!
TopHead兄,经过你的指点。我终于悟到了,现编了一段小程序与大家共享:
题目:如何把一个string类型的字符串放到Byte类型的数组中去?
解答:
Dim b(0 To 511) As Byte
Dim t as String, strTmp as String
Dim i as integer, j as integer

t = "nih nih你好"
j = 1
For i = 1 To Len(t)
strTmp = Mid(t, i, 1)
If Asc(strTmp) < 0 Then
b(j) = AscB(MidB(StrConv(strTmp, vbFromUnicode), 1, 1))
b(j + 1) = AscB(MidB(StrConv(strTmp, vbFromUnicode), 2, 1))
j = j + 2
Else
b(j) = Asc(Mid(t, i, 1))
j = j + 1
End If
Next

For i = 1 To j-1
MsgBox b(i)
Next

Chen_Lin 2000-06-01
  • 打赏
  • 举报
回复
试试ASCW函数

7,763

社区成员

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

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