整个好活:micropython utf-8转gb2312
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | class gb2312( object ): def __init__( self ): self .f = open ( 'utf2gb2312.bin' , 'r' , encoding = 'utf-8' ) def b2i( self , byte): # bytes转int r = 0 for i in range ( len (byte)): r = (r << 8 ) + byte[i] return r https: / / blog.csdn.net / jd3096 / article / details / 130257320 def i2b( self , num): # int转bytes num = int (num, 16 ) return num.to_bytes( 2 , 'big' ) def one_char( self , char): # 将一个字符转化成gb2312 utf_byte = char.encode( 'utf-8' ) r = self .B_S( 0 , 7296 , self .b2i(utf_byte)) gb2312_byte = self .i2b(r) # print(gb2312_byte) return gb2312_byte def strs( self , st): # 将字符串转化成gb2312 r = b'' for s in st: # print(s.encode('utf-8')) if len (s.encode( 'utf-8' )) < = 1 : r + = s.encode( 'utf-8' ) else : r + = self .one_char(s) return r def B_S( self , low, high, m): # 二分查找 if 0 < = low < = high < = 7296 : mid = (low + high) / / 2 self .f.seek(mid * 12 ) data = self .f.read( 12 ) utf = data[ 0 : 6 ] if int (utf, 16 ) < m: return self .B_S(mid + 1 , high, m) elif int (utf, 16 ) > m: return self .B_S(low, mid - 1 , m) else : return data[ 7 : - 1 ] def __del__( self ): self .f.close() fontbyte = gb2312() r = fontbyte.strs( '专业接单' ) print (r) |
https://blog.csdn.net/jd3096/article/details/130257320
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具