社区
VB基础类
帖子详情
一个很诡异的代码
dejigiekjief
2010-11-09 06:21:50
给串口通信的一个程序里的
有这么一个代码:s1 = s1 & Right("00" & Hex(buf1(i)), 2)
我想知道 我直接就HEX(buf1(i))不行吗
为什么还要多此一举的先连接 然后 再选取出右端的两个字符呢
岂有此理
求高手解答
...全文
187
16
打赏
收藏
一个很诡异的代码
给串口通信的一个程序里的 有这么一个代码:s1 = s1 & Right("00" & Hex(buf1(i)), 2) 我想知道 我直接就HEX(buf1(i))不行吗 为什么还要多此一举的先连接 然后 再选取出右端的两个字符呢 岂有此理 求高手解答
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
dejigiekjief
2010-11-10
打赏
举报
回复
[Quote=引用 10 楼 veron_04 的回复:]
首先你要理解Right函数的意思,他的意思是从右边开始取字符串指定长度内容。就你这个例子而言,就是保证每一个字节都是两位数字,不足的左边用0补齐,其实还可以使用:Format(Hex(buf1(i)),"00")来得到。
[/Quote]
对对对 呵呵 我顶
dejigiekjief
2010-11-10
打赏
举报
回复
[Quote=引用 5 楼 veron_04 的回复:]
这个完全是根据协议的,很有可能是你的InputMode属性设置的是文本方式,而通信协议却规定的是二进制方式表示数据,所以就需要如此处理,楼主,可否提供通信协议?这样大家也好更多的讨论讨论
[/Quote]
每次提问巫师都会热情的解答 非常感谢
协议都被你猜到了 真有你的
本来想把协议的有关部分给传上来呢 但是折腾了半天也不知道那个小框框怎么添加的 只好罢手了 呵呵 但是协议上确实是让输入的二进制的数字
还有 巫师,你说的INPUTMODE在什么地方呢 是TEXTBOX的属性吗 怎么我没有找到呢
只有一个相似的 是IMEMODE
求解答
贝隆
2010-11-10
打赏
举报
回复
首先你要理解Right函数的意思,他的意思是从右边开始取字符串指定长度内容。就你这个例子而言,就是保证每一个字节都是两位数字,不足的左边用0补齐,其实还可以使用:Format(Hex(buf1(i)),"00")来得到。
dejigiekjief
2010-11-10
打赏
举报
回复
[Quote=引用 4 楼 dianyancao 的回复:]
不知道是不是这样,
Hex(buf1(i))的长度不够两个字符时,会补零到前面
凑成Len为2,前面带零的字符串
[/Quote]
UP 果然是正解
数据协议里面需要是两位的 这样就凑成了两位
真的非常感谢
但是 为什么他不用s1 = s1 & Right("0" & Hex(buf1(i)), 2)这样呢
呵呵
达人知道吗
dejigiekjief
2010-11-10
打赏
举报
回复
有协议有真相 一会给大家看看协议
dejigiekjief
2010-11-10
打赏
举报
回复
[Quote=引用 14 楼 bcrun 的回复:]
按规矩补0吧.底层通信这种东西,即使只是传输的数据,也常常需要精确到一位都不差的,格式也要符合标准.这和写HTML网页时,浏览器经常能容错不能相比的.
[/Quote]
是的
dejigiekjief
2010-11-10
打赏
举报
回复
[Quote=引用 13 楼 dianyancao 的回复:]
引用 9 楼 dejigiekjief 的回复:
...s1 = s1 & Right("0" & Hex(buf1(i)), 2)这样呢...
这个只补一个零,
楼主前面的会在Hex(buf1(i))的长度为0时,返回"00"
Format(Hex(buf1(i)),"00")的长度不一定为2,也不是提取 十六进制的buf1(i) 后两位字符
[/Quote]
恩 呵呵
bcrun
2010-11-10
打赏
举报
回复
按规矩补0吧.底层通信这种东西,即使只是传输的数据,也常常需要精确到一位都不差的,格式也要符合标准.这和写HTML网页时,浏览器经常能容错不能相比的.
dianyancao
2010-11-10
打赏
举报
回复
[Quote=引用 9 楼 dejigiekjief 的回复:]
...s1 = s1 & Right("0" & Hex(buf1(i)), 2)这样呢...
[/Quote]
这个只补一个零,
楼主前面的会在Hex(buf1(i))的长度为0时,返回"00"
Format(Hex(buf1(i)),"00")的长度不一定为2,也不是提取 十六进制的buf1(i) 后两位字符
yachong
2010-11-09
打赏
举报
回复
[Quote=引用 4 楼 dianyancao 的回复:]
不知道是不是这样,
Hex(buf1(i))的长度不够两个字符时,会补零到前面
凑成Len为2,前面带零的字符串
[/Quote]
正解!
dbcontrols
2010-11-09
打赏
举报
回复
是通信协议规定的,哪位是什么格式、什么内容都是死的。
[Quote=引用 4 楼 dianyancao 的回复:]
不知道是不是这样,
Hex(buf1(i))的长度不够两个字符时,会补零到前面
凑成Len为2,前面带零的字符串
[/Quote]
贝隆
2010-11-09
打赏
举报
回复
这个完全是根据协议的,很有可能是你的InputMode属性设置的是文本方式,而通信协议却规定的是二进制方式表示数据,所以就需要如此处理,楼主,可否提供通信协议?这样大家也好更多的讨论讨论
dianyancao
2010-11-09
打赏
举报
回复
不知道是不是这样,
Hex(buf1(i))的长度不够两个字符时,会补零到前面
凑成Len为2,前面带零的字符串
lliai
2010-11-09
打赏
举报
回复
不理解。就是,我直接就HEX(buf1(i))不行吗,期待达人的回答。
clear_zero
2010-11-09
打赏
举报
回复
你debug一下就看到了
dbcontrols
2010-11-09
打赏
举报
回复
协议规定的吧
Gerrit
代码
Review入门实战
Gerrit review
代码
审核视频教程,Gerrit是Google为Android系统研发量身定制的一套免费开源...从我们实际使用效果看,Gerrit在核心
代码
质量控制、知识传承、团队培养等方面都具备很高的实用价值,推荐广大开发团队使用。
一段很
诡异
的
代码
/**************************************************************************** * * * @author Michael.Zhang * QQ:406673768 * *@version 1.0 * *@date...
很
诡异
的问题——Jenkins与svn
代码
冲突之解决方法
今天遇到
一个
很
诡异
的问题,可能是我刚刚接触jenkins的原因,导致这个问题困扰了我半个小时,不管怎么样,我还是记录下来,希望能帮助到那些和我一样刚刚接触jenkins的小伙伴。我从idea修改了两个配置文件,提交到...
三段
诡异
的JavaScript
代码
,结果出乎意料
【CSDN 编者按】自学习前端以来,陆陆续续会遇见很多短小令人惊讶的js
代码
,很多人会认为这是bug的存在,但换个角度来看待,是不是会发生有趣的事情呢。作者 |Chirag Swadia...
记
一个
诡异
的坑:一样的
代码
,换了一台电脑跑起来就乱掉了
记
一个
诡异
的坑:一样的
代码
,换了一台电脑跑起来就乱掉了
VB基础类
7,763
社区成员
197,609
社区内容
发帖
与我相关
我的任务
VB基础类
VB 基础类
复制链接
扫一扫
分享
社区描述
VB 基础类
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章