TA的每日心情 | 怒 12 小时前 |
---|
签到天数: 3384 天 连续签到: 6 天 [LV.Master]2000FPS
|
发表于 2018-11-14 08:47:38
|
显示全部楼层
|阅读模式
来自:广东省东莞市 电信
注册登陆后可查看附件和大图,以及购买相关内容
您需要 登录 才可以下载或查看,没有账号?注册会员
x
群里有人问,如何将接受到的二进制字符串,转换成布尔数组显示出来,如收到10010101这样的字符串,显示为TFFTFTFT这样的布尔数组。然后还给出了自己的解决方法:
二进制字符串转换为布尔数组方法1
提问人的方法
方法是正确的,对每个位的ASCII码进行判断,0的值为48,如果减48大小0,则表示值比48大,如49则为1,那就是真。不过使用了for循环,比较耗时复杂。而且里面的判断方法也比较多余。
二进制字符串转换为布尔数组方法2
热心人方法
热心人的方法,比较好懂,对每个位的字符值进行判断,等于1为真,不等于1为假。不过这里只是一个个显示的,不是一个数组,如果要弄成数组,还得创建数组。而且这种方法,如果字符串一长,那可就重复性工作大发了。
二进制字符串转换为布尔数组方法3
机器视觉论坛方法
上面的是论坛提供的方法,其实这个方法很简单,在提问人自己的基础上修改一下就可以。字符串变成数组,首先就是要将字符串变成字符的数组,然后再判断。这里只有字符串转字节数组函数可以实现,可以将字符串转换为ASCII的数组(字母、数组的比较容易处理,一个字节一个字符,如果是中文或其它双字节的字符,则会有两个字节)。转换成数组后,如果确定接受到的字符只有0/1这两个二进制的字符,那么只需要判断是不是等于1(49)或不等于0(48)即可。这里用的是不等于48,即只要不为0,就认为是真(逻辑上一般也是这样认为的,0为假,非0为真,而不只是1为真)。字符串转换为字节数组后是一个数组,数组也是可以直接和数组比较的(数组中的每个元素与数值比较),比较后得到的值就是一个数组。当然,如果要将布尔数组逐个显示,只需要使用索引数组,然后显示出来即可,也比较方便。
|
|