16*16點陣字型檔HZK16的使用
#include <stdio.h> #include <stdlib.h> void getHZCode(unsigned char incode[], unsigned char hzCode[]); int main() { //http://www.qqxiuzi.cn/bianma/zifuji.php 可以查詢漢字相應的GB2312編碼 unsigned char incode[2] = {0xce,0xd2};//要顯示的漢字 //unsigned char incode[2] = "我";//要顯示的漢字 unsigned char hzCode[32]; int i; int j = 0; getHZCode(incode, hzCode); for(i=0; i<32; i++){ for(j=0; j<8; j++){ if(hzCode[i] << j & 0x80) printf("●"); else printf("○"); } if((i+1) % 2 == 0) printf("\n"); } return 0; } void getHZCode(unsigned char incode[], unsigned char hzCode[]){ long offset;//相對於字型檔起始位置的偏移位元組數 int quCode = incode[0] - 0xa0;//區碼:該漢字的區號 int weiCode = incode[1] - 0xa0;//位碼:該漢字的位號 offset = (94 * (quCode - 1) + (weiCode - 1)) * 32;//32為一個漢字需要32位元組(16*16=256個點,256/8=32) FILE *HZK; HZK = fopen("HZK16", "rb"); if(HZK == NULL)//rb:開啟二進位制檔案 { printf("Can’t Open HZK16\n"); exit(0); } //fseek(FILE *stream, long offset, int fromwhere);函式設定檔案指標stream的位置 //如果執行成功,stream將指向以fromwhere為基準,偏移offset(指標偏移量)個位元組的位置,函式返回0 //偏移起始位置:檔案頭0(SEEK_SET),當前位置1(SEEK_CUR),檔案尾2(SEEK_END) fseek(HZK, offset, SEEK_SET); //size_t fread ( void *buffer, size_t size, size_t count, FILE *stream) //從一個檔案流中讀資料,最多讀取count個項,每個項size個位元組,如果呼叫成功返回實際讀取到的項個數(小於或等於count),如果不成功或讀到檔案末尾返回 0 //buffer:用於接收資料的記憶體地址 //size:要讀的每個資料項的位元組數,單位是位元組 //count:要讀count個數據項,每個資料項size個位元組. //stream:輸入流 fread(hzCode, 1, 32, HZK);//讀取表示此漢字的32位元組數到hzCode中 } /*#include <stdio.h> int main(void) { FILE* fphzk = NULL; int i, j, k, offset; int flag; unsigned char buffer[32]; unsigned char word[3] = "我"; unsigned char key[8] = { 0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01 }; fphzk = fopen("HZK16", "rb"); if(fphzk == NULL){ fprintf(stderr, "error hzk16\n"); return 1; } offset = (94*(unsigned int)(word[0]-0xa0-1)+(word[1]-0xa0-1))*32; fseek(fphzk, offset, SEEK_SET); fread(buffer, 1, 32, fphzk); for(k=0; k<32; k++){ printf("%02X ", buffer[k]); } printf("\n"); for(k=0; k<16; k++){ for(j=0; j<2; j++){ for(i=0; i<8; i++){ flag = buffer[k*2+j]&key[i]; printf("%s", flag?"●":"○"); } } printf("\n"); } fclose(fphzk); fphzk = NULL; return 0; }*/ /*#include <stdio.h> #include <stdlib.h> int main(void) { FILE* fphzk = NULL; int i, j, k, offset; int flag; unsigned char buffer[32]; unsigned char word[5]; unsigned char key[8] = { 0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01 }; fphzk = fopen("hzk16", "rb"); if(fphzk == NULL){ fprintf(stderr, "error hzk16\n"); return 1; } while(1){ printf("輸入要生成字模的漢字(多個):"); for(;;){ fgets((char*)word, 3, stdin); if(*word == '\n') break; offset = (94*(unsigned int)(word[0]-0xa0-1)+(word[1]-0xa0-1))*32; fseek(fphzk, offset, SEEK_SET); fread(buffer, 1, 32, fphzk); for(k=0; k<16; k++){ for(j=0; j<2; j++){ for(i=0; i<8; i++){ flag = buffer[k*2+j]&key[i]; printf("%s", flag?"●":"○"); } } printf("\n"); } printf("uchar code key[32] = {"); for(k=0; k<31; k++){ printf("0x%02X,", buffer[k]); } printf("0x%02X};\n", buffer[31]); printf("\n"); } } fclose(fphzk); fphzk = NULL; return 0; }*/
相關推薦
16*16點陣字型檔HZK16的使用
#include <stdio.h> #include <stdlib.h> void getHZCode(unsigned char incode[], unsigned char hzCode[]); int main() { //http://www.
16/24點陣字型檔(經典)
最近重新找了一下C語言的資料,深深的被c語言的底層操作特性迷戀~。在這方面,最經典的一本書莫過於清華大學出版社的《C高階實用程式設計》(王士元),在C語言高階應用領域裡這是我見過的寫的最好的一本書,非常可惜的這本書現在已經絕版了(可能是因為技術發展和更新的太快),在書店裡網上都無法買到了。記得本科
用51做的16*16點陣顯示螢幕(ptotues模擬)
第一次寫部落格,來試試水。正好前幾天搞一個微控制器的模擬拿來分享 16*16的點陣顯示屏,按下開始按鍵後,在顯示屏上輪流顯示“字串1”字樣。再次按下開始按鍵後,顯示屏上無任何顯示。按下切換後能顯示“字串2”字樣等(可以設計很多切換字串)。且啟動消隱的過程顯
用51做的16*16點陣顯示屏幕(ptotues仿真)
pan bit arp sharp image 再次 按鍵消抖 for 描述 第一次寫博客,來試試水。正好前幾天搞一個單片機的仿真拿來分享 16*16的點陣顯示屏,按下開始按鍵後,在顯示屏上輪流顯示“字符串1”字樣。再次按下開始按鍵後,顯示屏上無任何顯示。按下
LED 16*16點陣顯示屏
實驗二 16*16點陣 高亮度LED發光管構成點陣,通過程式設計控制可以顯示中英文字元、圖形及視訊動態圖形。所顯示字元的點陣資料可以自行編寫(即直接點陣畫圖),也可從標準字型檔(如ASC16、HZ16)中提取。後者需要正確掌握字型檔的編碼方法和字元定位的計算。 實驗用的
點陣字型檔HZK12 HZK16 HZK24 ASC12 ASC16 簡介 及 使用方法[附原始碼]
如何在嵌入式系統中使用大量的漢字和字元呢? DOS前輩們經過艱辛的努力,將製作好的字模放到了一個個標準的庫中以免去後輩的麻煩,這就是點陣字型檔檔案。 一般我們使用16*16的點陣宋體字型檔,所謂16*16,是每一個漢字在縱、橫各16點的區域內顯示的。不過後來又有了HZK12、H
點陣之路_STC15微控制器+16*24點陣+DS1302時鐘
程式碼是在工作室大神的指導下完成的,有bug的地方,還望多多包涵,開源給大家做一個參考~話不多說,先把程式碼奉上~~~ 資料夾內容如下: 實物圖片如下,先有一個大概的圖片,然後才能給大家說一下下邊的原理~ 這個是時間顯示: 這個是年份以及日期顯示: 這個
2018-4-16 16周4次課 zabbix郵件告警
zabbix19.12 添加自定義監控項目·需求:監控某臺web的80端口連接數,並出圖兩步:1)zabbix監控中心創建監控項目;2)針對該監控項目以圖形展現·對於第一步,需要到客戶端定義腳本[root@localhost ~]# vim /usr/local/sbin/estab.sh[root@loca
2018.4.16 16周4次課
Linux學習十六周四次課(4月16日)19.12 添加自定義監控項目19.13/19.14 配置郵件告警19.15 測試告警19.16 不發郵件的問題處理19.12 添加自定義監控項目前面提到過zabbix的優勢,其中之一就是很方便地添加自定義監控項目,它雖然提供了豐富的模板,但依然不能滿足各種各樣的特殊需
舞蹈鏈—— 16 × 16 數獨模板(ZOJ
原題的資料出錯了,下面給出正確的資料: Sample Input –A----C-----O-I -J–A-B-P-CGF-H- –D--F-I-E----P- -G-EL-H----M-J– ----E----C–G— -I–K-GA-B—E-J D-GP–J
C++中的類所佔記憶體空間總結(其中有一段關於成員函式處於程式碼段的解釋) 2011-12-9 16:16
#include<iostream.h> class a {}; class b{}; class c:public a{ virtual void fun()=0; }; class d:public b,public c{}; int main() { cout<&
UCOSii任務就緒表之OSUnMapTbl[16*16]的陣列是如何得到的
我比較喜歡圖,如下圖: 圖1: INT8U const OSUnMapTbl[]陣列內的資料。 1、UCOSii的優先順序相關內容 首先先介紹一個概念:優先順序。UCOSii的優先順序按倒敘排列,即優先順序數值越低,對應的優先順序越高。UCOSii支援64個任務,每個任務必須
MTK校準預設引數修改(2010-3-29 16:16)
[GSM900 level, ramp] APC dc offset=0 Low APC dc offset=0 APC lowest power=0 TX power level=195,266,312,359,379,416,444,490,548,621,713,736,781,822,878,878
西普學院CTF習題解析——WEB(已完成16/16)
源 預備 知識點 頁面除錯 審查元素 html js php asp sql 等語法基礎 請求頭 響應頭 偽造IP SQL注入基礎 XSS基礎 Web常用編碼 “網站後臺”概念及猜解、掃描技術 腦洞 工具參考 B
SSE影象演算法優化系列二十五:二值影象的Euclidean distance map(EDM)特徵圖計算及其優化。 SSE影象演算法優化系列九:靈活運用SIMD指令16倍提升Sobel邊緣檢測的速度(4000*3000的24點陣圖像時間由480ms降低到30ms)
Euclidean distance map(EDM)這個概念可能聽過的人也很少,其主要是用在二值影象中,作為一個很有效的中間處理手段存在。一般的處理都是將灰度圖處理成二值圖或者一個二值圖處理成另外一個二值圖,而EDM演算法確是由一幅二值圖生成一幅灰度圖。其核心定義如下: The definitio
點陣之路_STC15微控制器+8*16點陣+DS1302時鐘
資源共享一下,8*16點陣系列的程式,自己參考例程寫的,不太完善還望多多包涵! 對應此文章應該是檔名字為下圖的資料夾! 硬體介紹 1. 主控: STC15F2K60S2 2. 點陣: 1588BR 8*8點陣 經過測試發現型號為 788BS的8
VC下2、4、8、16、24、32位點陣圖的資料解析與顯示
在VC中,點陣圖顯示一般有現成的方式,如使用picture控制元件、GetDC()->StretchBlt、::BitBlt等,但這些方式都是高層的封裝,讓你不清楚一副點陣圖是如何解析並顯示到DC上的。實際應用中,比如影象處理,視訊顯示等,需要操作到點陣圖中的畫素,這
16點陣圖像轉換為8點陣圖像(c++,python)
如之前所說,我們需要將16點陣圖像轉換為8點陣圖像;16點陣圖像的畫素值一共有:2^16=65536種顏色;而8位點陣圖像只有:2^8=256種顏色,傳統的位數轉換都是:畫素值*256/65536,比如photoshop,以及matlab的im2uint8函式都是如此,在一般
建立WINCE下16位格式點陣圖實現快速BitBlt
在WINCE下,如果建立的點陣圖與螢幕裝置格式不一樣,將會導致BitBlt函式極為緩慢,因此需要建立一幅16位色565格式點陣圖,用此方法創建出的點陣圖可以提供1ms的快速BitBlt繪製。當然,如果裝置不是565顏色格式的,更改程式碼中的顏色掩碼位bmiColors就可以了
點陣圖(Bitmap)16色,256色,24位位圖表達的意思
我們常說:Windows95/98處於16色或256色狀態,它的意思是螢幕上最多能顯示多少種顏色。 你看,在16色下顯示黑白的文字或簡單的色彩線條是非常正常的,但如果我們要想看多於16種顏色的畫片,就得用256色或更多的色彩了。也就是說,要把顯示模式設定成高色彩狀態。 對螢幕上的每一個象素來說,25