1樓:匿名使用者
micropython中好像還沒有unicode方面的支援,中文解碼也還沒有。
不過可以參考這樣的想法,gb2312編碼的漢字都是雙位元組,asc碼都是大於127的.這樣如果連續兩個字元都是大於127的,就可以當成一個漢字處理。
2樓:匿名使用者
# -*- code: utf-8 -*-
# 在 micropython 中執行, 注意在執行目錄下有 hzk12/16
# '啊' 是漢字區第1個漢字,對應資料為 ?不對?
# 0x00, 0x00, 0x0e, 0xfc, 0xea, 0x08, 0xaa, 0x08,
# 0xaa, 0xe8, 0xaa, 0xa8, 0xac, 0xa8, 0xaa, 0xa8,
# 0xaa, 0xa8, 0xaa, 0xa8, 0xea, 0xe8, 0xaa, 0xa8,
# 0x0c, 0x08, 0x08, 0x08, 0x08, 0x28, 0x08, 0x10
# hzk16 試驗: '一','我'正確, '啊' 不對?
# hzk12 字型檔的位長度是16*12
# seek位置 '一': 111168, '五': 103152, '我':102196
'''int(x [,base ]) 將x轉換為一個整數
long(x [,base ]) 將x轉換為一個長整數
float(x ) 將x轉換到一個浮點數
complex(real [,imag ]) 建立一個複數
str(x ) 將物件 x 轉換為字串
repr(x ) 將物件 x 轉換為表示式字串
eval(str ) 用來計算在字串中的有效python表示式,並返回一個物件
tuple(s ) 將序列 s 轉換為一個元組
list(s ) 將序列 s 轉換為一個列表
chr(x ) 將一個整數轉換為一個字元
unichr(x ) 將一個整數轉換為unicode字元
ord(x ) 將一個字元轉換為它的整數值
hex(x ) 將一個整數轉換為一個十六進位制字串
oct(x ) 將一個整數轉換為一個八進位制字串
bytearray(x) 列表轉為陣列
'''from machine import pin, i2c
import framebuf
import ssd1306
i2c = i2c(sda=pin(5), scl=pin(4))
o = ssd1306.ssd1306_i2c(128,64,i2c)
def drawhz( hzs, xp, yp ):
for x in range( len(hzs)//2 ):
c = ((hzs[x*2] - 0xa1)* 94 + (hzs[x*2+1] - 0xa1)) * 24 #gb2312 轉成 區位號
f = open( 'uc_hzk12', 'rb' )
f.seek( c )
hz = bytearray( f.read(24) )
f.close()
# 建立 hzk12:16x12 or hzk16:16x16 大小幀快取區儲存**幀,水平掃描
fb1 = framebuf.framebuffer(hz, 16, 12, framebuf.mono_hlsb)
o.blit( fb1, xp + x*12, yp ) # 將fb1幀快取送至oled顯示,起始位(38,16)
xp += 1
#在 repl 中, 貼上的中檔案變碼了, 裝載檔案形式才正常
def drawhz2(hzs, xp, yp):
for x in range(len(hzs)):
f = open('uni2gb', 'rb')
f.seek( (ord(hzs[x])-0x4e00)*2 )
gb23 = bytearray(f.read(2))
f.close()
c = ((gb23[0] - 0xa1) * 94 + (gb23[1] - 0xa1)) * \
24 # gb2312 轉成 區位號
f = open('uc_hzk12', 'rb')
f.seek(c)
hz = bytearray(f.read(24))
f.close()
# 建立 hzk12:16x12 or hzk16:16x16 大小幀快取區儲存**幀,水平掃描
fb1 = framebuf.framebuffer(hz, 16, 12, framebuf.mono_hlsb)
o.blit(fb1, xp + x*12, yp) # 將fb1幀快取送至oled顯示,起始位(38,16)
xp += 1
o.fill(0)
# upy沒法實現unicode 轉 gb2312, 要藉助cpython 轉化成 gb2312
#現在可用 檔案查表法 uni2gb (unicode-0x4e00)轉gb2312碼
hzs = ( 206,210, 185,253, 193,249, 210,187, 189,218 ) #每兩位元組表示一個漢字
drawhz2( '\u98de\u96ea\u8fde\u5929', 0, 0 )
drawhz2( '\u98de\u96ea\u8fde\u5929\u5c04\u767d\u9e7f', 0, 13 ) #飛雪連天
drawhz( hzs, 0, 26 )
drawhz( hzs, 16, 39)
drawhz( hzs, 16, 52 )
o.show()
excel中怎麼將13 1 1,13 2 1,13 3 1,13 10 1,13 11 1,13 12 1進行排序呢
正常是可以的。你的排序不成功,說明你這些所謂的數值,不是數值,而是文字。選中這一列,選單,資料,分列,直接點完成。強行轉化為純數值,才可以排序。假設資料在a列,分別設公式在b e列,b列提取出前面的一組資料 13 公式為left a1,2 c列提取出中間的資料,公式為mid a1,4,find a1...
ps中怎麼將透明底層換成白色的,PS中怎麼將透明底層換成白色的?
且看時光 通用方法 1 按 ctrl n 新建圖層,3 按 ctrl delete 填充圖層為白色 也可用油漆桶 4 按 shift ctrl 移動新建的圖層為最底層 即可。注意 在最底圖層,點眼睛可在透明和白色間切換。 樓主 新建的圖層當然是透明的 你只要選中這個新建的圖層 填充白色就可以了 快捷...
CAD中怎麼將圓拉伸成橢圓,CAD中怎麼把圓形的圖變成橢圓型,長方形的圖變成正方形啊
cad的圓無法直接改變為橢圓。它們是不同的物件,構成它們的數學公式完全不同。只能另外繪畫橢圓。cad不是普通的藝術類繪圖軟體,他的每一個圖元物件都必須由一個特定的精確的數學公式精確描繪。cad中怎麼把圓形的圖變成橢圓型,長方形的圖變成正方形啊 相當於對一個圖形的x和y方向指定不同比例進行縮放,這樣的...