當前位置:首頁 » 編程語言 » c語言漢字的ascii
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言漢字的ascii

發布時間: 2022-02-04 20:40:42

A. 怎樣用c語言實現漢字和ASCII碼到UNICODE碼的轉換

用MultiByteToWideChar和WideCharToMultiByte可以做到編碼的轉換。


  1. MultiByteToWideChar是一個windows API 函數,該函數映射一個字元串到一個寬字元(unicode)的字元串。函數原型:
    int MultiByteToWideChar(
    UINT CodePage,
    DWORD dwFlags,
    LPCSTR lpMultiByteStr,
    int cchMultiByte,
    LPWSTR lpWideCharStr,
    int cchWideChar
    );參數:
    CodePage:指定執行轉換的字元集,這個參數可以為系統已安裝或有效的任何字元集所給定的值。你也可以指定其為下面的任意一值:
    CP_ACP:ANSI字元集;CP_MACCP:Macintosh代碼頁;CP_OEMCP:OEM代碼頁;
    CP_SYMBOL:符號字元集(42);CP_THREAD_ACP:當前線程ANSI代碼頁;
    CP_UTF7:使用UTF-7轉換;CP_UTF8:使用UTF-8轉換。
    dwFlags:一組位標記用以指出是否未轉換成預作或寬字元(若組合形式存在),是否使用象形文字替代控制字元,以及如何處理無效字元。你可以指定下面是標記常量的組合,含義如下:
    MB_PRECOMPOSED:通常使用預作字元——就是說,由一個基本字元和一個非空字元組成的字元只有一個單一的字元值。這是預設的轉換選擇。不能與
    MB_COMPOSITE值一起使用。
    MB_COMPOSITE:通常使用組合字元——就是說,由一個基本字元和一個非空字元組成的字元分別有不同的字元值。不能與MB_PRECOMPOSED值一起使用。
    MB_ERR_INVALID_CHARS:如果函數遇到無效的輸入字元,它將運行失敗,且GetLastErro返回ERROR_NO_UNICODE_TRANSLATION值。
    MB_USEGLYPHCHARS:使用象形文字替代控制字元。
    組合字元由一個基礎字元和一個非空字元構成,每一個都有不同的字元值。每個預作字元都有單一的字元值給基礎/非空字元的組成。在字元è中,e就是基礎字元,而重音符標記就是非空字元。
    函數的預設動作是轉換成預作的形式。如果預作的形式不存在,函數將嘗試轉換成組合形式。
    標記MB_PRECOMPOSED和MB_COMPOSITE是互斥的,而標記MB_USEGLYPHCHARS和MB_ERR_INVALID_CHARS則不管其它標記如何都可以設置。
    lpMultiByteStr:指向將被轉換字元串的字元。
    cchMultiByte:指定由參數lpMultiByteStr指向的字元串中位元組的個數。如果lpMultiByteStr指定的字元串以空字元終止,可以設置為-1(如果字元串不是以空字元中止,設置為-1可能失敗,可能成功),此參數設置為0函數將失敗。
    lpWideCharStr:指向接收被轉換字元串的緩沖區。
    cchWideChar:指定由參數lpWideCharStr指向的緩沖區的寬字元個數。若此值為零,函數返回緩沖區所必需的寬字元數,在這種情況下,lpWideCharStr中的緩沖區不被使用。返回值:
    如果函數運行成功,並且cchWideChar不為零,返回值是由lpWideCharStr指向的緩沖區中寫入的寬字元數;如果函數運行成功,並且cchWideChar為零,返回值是接收到待轉換字元串的緩沖區所需求的寬字元數大小。如果函數運行失敗,返回值為零。若想獲得更多錯誤信息,請調用GetLastError函數。它可以返回下面所列錯誤代碼:
    ERROR_INSUFFICIENT_BUFFER;ERROR_INVALID_FLAGS;
    ERROR_INVALID_PARAMETER;ERROR_NO_UNICODE_TRANSLATION。

  2. WideCharToMultiByte,該函數映射一個unicode字元串到一個多位元組字元串。
    函數原型:
    int WideCharToMultiByte(
    UINT CodePage, //指定執行轉換的代碼頁
    DWORD dwFlags, //允許你進行額外的控制,它會影響使用了讀音符號(比如重音)的字元
    LPCWSTR lpWideCharStr, //指定要轉換為寬位元組字元串的緩沖區
    int cchWideChar, //指定由參數lpWideCharStr指向的緩沖區的字元個數
    LPSTR lpMultiByteStr, //指向接收被轉換字元串的緩沖區
    int cchMultiByte, //指定由參數lpMultiByteStr指向的緩沖區最大值
    LPCSTR lpDefaultChar, //遇到一個不能轉換的寬字元,函數便會使用pDefaultChar參數指向的字元
    LPBOOL pfUsedDefaultChar //至少有一個字元不能轉換為其多位元組形式,函數就會把這個變數設為TRUE
    );
    參數:
    CodePage:指定執行轉換的代碼頁,這個參數可以為系統已安裝或有效的任何代碼頁所給定的值。你也可以指定其為下面的任意一值:
    CP_ACP:ANSI代碼頁;CP_MACCP:Macintosh代碼頁;CP_OEMCP:OEM代碼頁;
    CP_SYMBOL:符號代碼頁(42);CP_THREAD_ACP:當前線程ANSI代碼頁;
    CP_UTF7:使用UTF-7轉換;CP_UTF8:使用UTF-8轉換
    返回值:
    如果函數運行成功,並且cchMultiByte不為零,返回值是由 lpMultiByteStr指向的緩沖區中寫入的位元組數;如果函數運行成功,並且cchMultiByte為零,返回值是接收到待轉換字元串的緩沖區所必需的位元組數。如果函數運行失敗,返回值為零。若想獲得更多錯誤信息,請調用GetLastError函數。它可以返回下面所列錯誤代碼:
    ERROR_INSUFFICIENT_BJFFER;ERROR_INVALID_FLAGS;
    ERROR_INVALID_PARAMETER;ERROR_NO_UNICODE_TRANSLATION。
    注意:指針lpMultiByteStr和lpWideCharStr必須不一樣。如果一樣,函數將失敗,GetLastError將返回ERROR_INVALID_PARAMETER的值。
    Windows CE:不支持參數CodePage中的CP_UTF7和CP_UTF8的值,以及參數dwFlags中的WC_NO_BEST_FIT_CHARS值。

B. 在C語言中怎樣才能得到漢字的ASCII碼

ascii碼指的是0~255的單位元組編碼。

漢字是沒有ascii碼值的。

同一個漢字 根據編碼方式 佔2~4的位元組,有不同的實際碼值。

要列印這個碼值,最簡單的方法

就是把漢字存儲字元數組,然後列印字元數組的各個值。

比如

unsignedcharstr[]="列印漢字碼值";
inti;
for(i=0;i<sizeof(str);i++)
printf("%02x",str[i]);

C. c語言編程中如何顯示字元的ASCII碼值

利用printf函數的輸出控制字元串的控制代碼,可以方便輸出字元變數的ASCII值。設m是已賦值的char型變數,那麼

printf("%d ",m);輸出變數m的十進制ASCII值;

printf("%x ",m);輸出變數m的十六進制ASCII值。

例如:

char y='X';

printf("%c ",y); // 得 字元 X

printf("%d ",y); // 得字元變數的ascii碼,十進制數

printf("%x ",y); // 得字元變數的ascii碼,十六進制數

printf("%o ",y); // 得字元變數的ascii碼,八進制數

也可以先定義字元ch,輸入字元,在把字元強制轉換成整數就是該字元的ASCII碼值,即int(ch)。

(3)c語言漢字的ascii擴展閱讀:

通常以串的整體作為操作對象,如:在串中查找某個子串、求取一個子串、在串的某個位置上插入一個子串以及刪除一個子串等。兩個字元串相等的充要條件是:長度相等,並且各個對應位置上的字元都相等。設p、q是兩個串,求q在p中首次出現的位置的運算叫做模式匹配。串的兩種最基本的存儲方式是順序存儲方式和鏈接存儲方式。

C語言中,字元串的表現形式有兩種:一種是以字元數組的形式,如char str[20]="I love china";另一種是以字元指針的形式,如char *str="I love china"。字元串可以賦值給字元指針變數,或者將字元串用字元數組保存。

D. 求c語言中輸入漢字,輸出它們的ASCII碼值序列和ASCII碼值之和的程序流程

漢字沒有被 ASCII 編碼。所以沒有漢字的 ASCII 碼值的說法。不要人雲亦雲,傳播偽科學。

E. 在C語言中,怎麼將漢字轉換成ascii碼,請舉例說明.

漢字不能表示成ASCII碼,簡體漢字一般是用GB2312存儲的,佔用兩個char位置。舉例如下
main()
{
char chn[3];
scanf("%s",chn); //這里輸入一個漢字
printf("%d %d\n",chn[0]&0xFF,chn[1]&0xFF);
//輸出對應的數字,與0xff做且運算是為了保證輸出正數
return 0;
}