又一字符串问题。
我想用string(含汉字)转成byte[],然后传输,接收端再把byte[]类型转成String
这如何实现?主要是后一步,把byte转化成 string
问题点数:0、回复次数:22Top
1 楼wangh2122(wangh2122)回复于 2004-07-01 02:28:29 得分 0
直接转就可以了,VB中byte和string可以直接互相转换的
Top
2 楼hhd85(hhd885)回复于 2004-07-01 02:32:32 得分 0
您是说用 cstr 吗?Top
3 楼hhd85(hhd885)回复于 2004-07-01 02:37:30 得分 0
不行的,根本不起作用.我编写的是 网络传送文件的.
服务端用 String 发送数据,客户端用 byte接收,英文,数字的文件名,都可以识别,惟独 汉字的不可以.
按刚按你说的转换了,也不行的。Top
4 楼wy23456283(影子)回复于 2004-07-01 02:39:26 得分 0
问下,怎么把string(含汉字)转成byte[]?Top
5 楼WallesCai(女人之美,在于蠢得无怨无悔,男人之美,在于撒谎撒得白日见鬼)回复于 2004-07-01 02:40:52 得分 0
因为汉字是双字节的呀,你想啊,一个汉字两个字节怎么能放进一个BYTE中呢? INTEGER类型还差不多吧?Top
6 楼hhd85(hhd885)回复于 2004-07-01 02:46:16 得分 0
WallesCai(WallesCai)
因为汉字是双字节的呀,你想啊,一个汉字两个字节怎么能放进一个BYTE中呢? INTEGER类型还差不多吧?
这位大哥,可以给个简单的事例吗?小弟刚学vb.
我是在接收的时候把 数据存进了 byte数组,现在我只想把所要 的汉字分离出来转换就可以了。
分离我已经分出来了,就是不知道如何转换.Top
7 楼wangh2122(wangh2122)回复于 2004-07-01 02:53:06 得分 0
不好意思,刚才没有说清楚,不是直接转换,而是直接赋值就行了,不需要用到cstr 之类的函数Top
8 楼wy23456283(影子)回复于 2004-07-01 02:58:28 得分 0
能说清楚点,怎么个存法??
dim b() as byte
dim c as string
c="123打算"
然后呢?
怎么赋值?Top
9 楼wangh2122(wangh2122)回复于 2004-07-01 03:07:04 得分 0
b=c就行了Top
10 楼hhd85(hhd885)回复于 2004-07-01 03:07:24 得分 0
dim b() as byte
dim c as string
dim d as string
Winsock1.GetData b '发送来的 "123打算"数据保存到了 byte 的b()中.
For I = 0 To 接收到的长度 - 1
c = c & Chr(b(I)) '组合文件长度描述字符串
Next I
text1.text=Left(c,3) '显示 "123"
text2.text=Right(c,4) '显示什么呢? 就这里如何转换过来.Top
11 楼hhd85(hhd885)回复于 2004-07-01 03:08:28 得分 0
回复人: wangh2122(wangh2122) ( ) 信誉:100 2004-07-01 03:07:00 得分: 0
b=c就行了
大哥你不是在耍我们吧,这样咋可以呢.Top
12 楼wy23456283(影子)回复于 2004-07-01 03:14:49 得分 0
Dim b() As Byte
Dim c As String
c = "123打算"
b = c
'MsgBox b(0)
MsgBox b
你会看到完全不同的结果
好像他说的是对的Top
13 楼wangh2122(wangh2122)回复于 2004-07-01 03:15:47 得分 0
绝对可以的,放心用吧^_^Top
14 楼wy23456283(影子)回复于 2004-07-01 03:17:48 得分 0
如果你要把b中的汉字分离出来用 asc(mid(b,1))做个循环吧Top
15 楼wy23456283(影子)回复于 2004-07-01 03:21:09 得分 0
这个在把.txt文件数据读出来,放进2进制格式的表的列中,也是一样的方法。我怎么刚才没想到,呵呵。Top
16 楼hhd85(hhd885)回复于 2004-07-01 03:21:32 得分 0
晕~~
我是说把 Byte 转换为 String. 不是 把 String 转换为Byte 呀.哥哥们.Top
17 楼hhd85(hhd885)回复于 2004-07-01 03:22:42 得分 0
?
Dim b() As Byte
Dim c As String
c = "123打算"
b = c
'MsgBox b(0)
MsgBox b
我试试看.Top
18 楼wy23456283(影子)回复于 2004-07-01 03:28:37 得分 0
单个b(i)应该是byte格式的,整的应该是string格式的吧。
Private Sub Command1_Click()
Dim b() As Byte
Dim c As String
c = "123打算"
b = c
For i = 0 To UBound(b)
e = e & b(i)
Next
MsgBox e
End Sub
你自己可以看看byte格式到底是什么样的字符窜。Top
19 楼hhd85(hhd885)回复于 2004-07-01 03:38:48 得分 0
的确,我也发现了。这个到底有没有办法解决?
我刚找了这个,不过是vbA的,不知道修改下可以用在vb上.
http://dev.csdn.net/develop/article/27/27346.shtm
哎,说是字符, 不知道支持汉字不。
Top
20 楼hhd85(hhd885)回复于 2004-07-01 03:47:59 得分 0
继续顶起来,明天希望有高手帮帮小弟.Top
21 楼wy23456283(影子)回复于 2004-07-01 03:48:44 得分 0
对了问下,你现在看的什么书呢?我想找本深点的书看,比如dll编写,activex控件编写,以及class等深层次的vb应用还有winsock 方面,有好书给推荐下呀。Top
22 楼hhd85(hhd885)回复于 2004-07-01 11:02:00 得分 0
我也就拿几本烂书,我这是个小地方,买不到好书的。
别大差呀,继续我们的讨论。
还有那位高手指点以下。Top




