转换16进制的问题。

wohaorende 2010-11-26 09:01:05
我有数据存放在StringBuilder中
1,如何判断是16进制还是字符型呢?
2,判断以后如何转换呢?字符型的好办 .ToString(),十六进制如何转换

朋友推荐个方法:进行强转换一次 如果失败就是字符串

比如 ctype( obj, int16)
try一下

但是我没搞定。这样写 CType(serialdata.ToString(), Int16)
报错表达式:表达式不是方法
...全文
109 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wohaorende 2010-11-27
  • 打赏
  • 举报
回复
现在的问题是如何判断Byte中的是字符串还是16进制数据。
chinaboyzyq 2010-11-27
  • 打赏
  • 举报
回复
16进制也是字符串,所以无法判断。

协议有问题……
QQRN 2010-11-27
  • 打赏
  • 举报
回复
唉,别在这个问题上纠结了,因为你这样的做法本身就是个错误。
在传送数据时候应该自定义个通讯协议,标识传送的内容。
比如 下面就是个简单的数据头:
0-1 标识:如果传送的是 字符就=1,数值=2
2-5 内容长度(字符串长度)
6- 内容(放置字符串或数值)

收到数据后,根据数据头进行分析就能得到你要的数据
wohaorende 2010-11-26
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 wuyazhe 的回复:]

协议有描述数据头把。比如文本的协议头为ABC,二进制的为&H01,&H02
你判断连续2个字节,找到以上任何一种都认为是找到某种数据开始,否则就丢弃,找到后根据对应协议判定长度,判定是否完整。
[/Quote]
你的思路是根据协议来判断。就是把BYTE中的数据转换成16进制,然后根据协议格式判断,是否正确,否则就按照字符输出对不对?
我的意思是如何在不转换成16进制的情况下判断出来是16进制数据,因为我的返回数据只可能是16进制,或者是字符型。二者不混淆。我想找个方法先判断然后转换。然后再看是否符合规约。
兔子-顾问 2010-11-26
  • 打赏
  • 举报
回复
协议有描述数据头把。比如文本的协议头为ABC,二进制的为&H01,&H02
你判断连续2个字节,找到以上任何一种都认为是找到某种数据开始,否则就丢弃,找到后根据对应协议判定长度,判定是否完整。
wohaorende 2010-11-26
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wuyazhe 的回复:]

你自己不知道通讯协议么?
[/Quote]
我知道通讯协议,下挂了两个设备,一个返回字符串一个返回16进制。问题是我想知道Byte数组中什么时候返回什么数据。可能吗/
兔子-顾问 2010-11-26
  • 打赏
  • 举报
回复
你自己不知道通讯协议么?
wohaorende 2010-11-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 caozhy 的回复:]

引用 2 楼 wohaorende 的回复:
引用 1 楼 caozhy 的回复:

StringBuilder 里面的难道除了字符串还有别的???

我想发字符串转换成16进制数据

那你需要确定字符串的编码。
同样的文本,用UTF-8 GB Unicode或者Big5编码的十六进制数据是完全不同的。

使用 System.Text.Encoding.GetBytes() ……
[/Quote]
现在的问题改变了。我用 Dim serialdata(1024) As Byte这个参数接收到了数据。
我也可以转换成16进制,就是不知道怎么判断接收到的是16进制数据还是英文字符数据。
wohaorende 2010-11-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 caozhy 的回复:]

引用 2 楼 wohaorende 的回复:
引用 1 楼 caozhy 的回复:

StringBuilder 里面的难道除了字符串还有别的???

我想发字符串转换成16进制数据

那你需要确定字符串的编码。
同样的文本,用UTF-8 GB Unicode或者Big5编码的十六进制数据是完全不同的。


使用 System.Text.Encoding.GetBytes() ……
[/Quote]


我觉得你说的有点对。我现在StringBuilder 里面存放的是16进制数据。用serialdata.ToString()显示以后是一堆乱码。我要转换成16进制。请教具体如何转换?
threenewbee 2010-11-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wohaorende 的回复:]
引用 1 楼 caozhy 的回复:

StringBuilder 里面的难道除了字符串还有别的???

我想发字符串转换成16进制数据
[/Quote]
那你需要确定字符串的编码。
同样的文本,用UTF-8 GB Unicode或者Big5编码的十六进制数据是完全不同的。

使用 System.Text.Encoding.GetBytes() 方法转换成字节数组。
wohaorende 2010-11-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 caozhy 的回复:]

StringBuilder 里面的难道除了字符串还有别的???
[/Quote]
我想发字符串转换成16进制数据
threenewbee 2010-11-26
  • 打赏
  • 举报
回复
StringBuilder 里面的难道除了字符串还有别的???

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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