如何在MicroPython中将字符串转换为二进制位?
MicroPython字符串转二进制位的替代实现
你遇到的错误确实是因为部分MicroPython环境未内置format()函数,以下是两种无需依赖format()的实现方法:
方法一:位运算手动生成二进制位
通过位操作逐个提取字符ASCII码的每一位,拼接成8位二进制字符串,兼容性拉满:
def tobits(s): bits = "" for c in s: ascii_code = ord(c) # 从最高位到最低位依次取每一位 for i in range(8): bit = (ascii_code >> (7 - i)) & 1 bits += str(bit) return bits
方法二:利用bin()函数补零(需环境支持bin())
如果你的MicroPython设备支持bin()函数,可以用它生成二进制串后补前导零至8位:
def tobits(s): bits = "" for c in s: # 去掉bin()返回的'0b'前缀 binary_part = bin(ord(c))[2:] # 手动补前导零到8位(避免依赖zfill) bits += '0'*(8 - len(binary_part)) + binary_part return bits
另外提一句:原函数里for i in c是冗余代码,c本身就是单个字符,直接用ord(c)即可,不需要再遍历。
内容的提问来源于stack exchange,提问作者nerd
相关产品推荐
相关产品推荐

