比如说我输入的是913b,我写入文件之后,用UltraEdit打开,看到的当然是乱码,切换16进制编辑文件的时候,我想在左边16进制区域能看到91 3b,我写了一个函数,但是只能处理部分,91就显示不出来,请问为什么?或者告诉我该如何实现?我写的函数如下:dim tmp as string
dim rst as string
dim i as integer
tmp = tmp & Mid(str, x, y)
For i = 1 To Len(tmp) Step 2
rst = rst & Chr(CInt("&H" & Mid(tmp, i, 2)))
Next i
dim rst as string
dim i as integer
tmp = tmp & Mid(str, x, y)
For i = 1 To Len(tmp) Step 2
rst = rst & Chr(CInt("&H" & Mid(tmp, i, 2)))
Next i
要显示的是字符串"913b",对吗?
你的函数处理的是Chr(CInt("&H91))也即还原回0x91所代表的字符,如你所说“当然是乱码”rst = rst & Chr(CInt("&H" & Mid(tmp, i, 2)))
应改成
rst = rst & Mid(tmp, i, 2)
txtUni.Text = AscW("中")
End SubPrivate Sub Command2_Click()
txtHZ.Text = ChrW(Val(txtUni.Text))
End Sub
你的办法是转成unicode码,那在txtUni中输出的是一串数字,在vb中写入文件的话,能直接把unicode码写进去吗?我测试了一下,如果直接写ascw(text)到文件的话,用十六进制读出来的不是我想要的东西
Dim byt() As Byte
Dim s As String
Dim i As Long
s = Text1.Text
ReDim byt(0 To Len(s) \ 2 - 1) As Byte
For i = 1 To Len(s) Step 2
byt(i \ 2) = CByte("&H" & Mid(s, i, 2))
Next Open "f:\test" For Binary As #1
Put #1, , byt
Close 1
End Sub
rst = rst & Chr(CInt("&H" & Mid(tmp, i, 2)))
看起来更像是一个字节一个字节的读取出来,再串成串。没想到你是一个字节一个字节转换成chr再串起来,再写到文本里,这简直是……建议你加强一下ASCII码,还有十六进制与字符串关系等方面的知识。
你难道要跟人说,有一部分的自然数是素数,所以全部的自然数都是素数了?
你这种转换成chr的方法根本就是不可行的,只能转换一部分的数据有何意义?0-7F能用,80-FF不能用,你的这段程序有什么作用?微软卖操作系统,只能在50%的机子上运行,难道他跟不能运行的客户说:“我们有一部分能运行”?你玩个游戏存个存档,只有一半的存档能读取,你敢存吗?你用块硬盘存东西,只有一半的数据是正确的,你敢用吗?你用个键盘打字,只有一半的键按了有反应,你要这种键盘吗?你家LED显示器有一半的坏点,你用吗?你的鞋子只有一只,你穿吗?
懒得跟你个电脑盲耗时间,不再回贴。
既然你不回了,我也懒得骂你了