二进制字符串转换为布尔数组
群里有人问,如何将接受到的二进制字符串,转换成布尔数组显示出来,如收到10010101这样的字符串,显示为TFFTFTFT这样的布尔数组。然后还给出了自己的解决方法:提问人的方法
方法是正确的,对每个位的ASCII码进行判断,0的值为48,如果减48大小0,则表示值比48大,如49则为1,那就是真。不过使用了for循环,比较耗时复杂。而且里面的判断方法也比较多余。
热心人方法
热心人的方法,比较好懂,对每个位的字符值进行判断,等于1为真,不等于1为假。不过这里只是一个个显示的,不是一个数组,如果要弄成数组,还得创建数组。而且这种方法,如果字符串一长,那可就重复性工作大发了。
机器视觉论坛方法
上面的是论坛提供的方法,其实这个方法很简单,在提问人自己的基础上修改一下就可以。字符串变成数组,首先就是要将字符串变成字符的数组,然后再判断。这里只有字符串转字节数组函数可以实现,可以将字符串转换为ASCII的数组(字母、数组的比较容易处理,一个字节一个字符,如果是中文或其它双字节的字符,则会有两个字节)。转换成数组后,如果确定接受到的字符只有0/1这两个二进制的字符,那么只需要判断是不是等于1(49)或不等于0(48)即可。这里用的是不等于48,即只要不为0,就认为是真(逻辑上一般也是这样认为的,0为假,非0为真,而不只是1为真)。字符串转换为字节数组后是一个数组,数组也是可以直接和数组比较的(数组中的每个元素与数值比较),比较后得到的值就是一个数组。当然,如果要将布尔数组逐个显示,只需要使用索引数组,然后显示出来即可,也比较方便。
学习学习……
页:
[1]