Swift中如何将用户输入的二进制字符串转为数值以执行按位OR操作
二进制字符串转数值并执行按位OR的正确方法
嘿,你踩的坑我之前也遇到过!直接用Int16(a)!转换二进制字符串是行不通的——这个默认初始化器会把字符串当成十进制数来解析,比如"10101"会被转成十进制的10101,而不是二进制对应的21,这就导致后续的按位OR操作完全偏离预期了。
Swift的整数类型其实自带了专门处理不同进制字符串的初始化方法,只需要指定radix(基数)参数为2,就能正确把二进制字符串转成对应的数值。
给你修正后的代码,还加了安全解包的处理(避免输入无效二进制字符串时崩溃):
// 假设a是输入的二进制字符串"10101",b是"11110" guard let aBits = Int16(a, radix: 2), let bBits = Int16(b, radix: 2) else { // 这里可以根据需求替换成自定义错误处理,比如提示用户输入无效 fatalError("输入的不是有效的二进制字符串哦") } let combinedBits = aBits | bBits // 这里combinedBits的结果是十进制31,对应二进制11111,正是你要的按位OR结果
额外提一句:尽量不要用强制解包!,如果用户输入了包含非0/1的字符,强制解包会直接崩溃,用guard let或者if let做安全处理会更健壮。
内容的提问来源于stack exchange,提问作者Bhanupriya
相关产品推荐
相关产品推荐

