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

字元轉換映射表c語言

發布時間: 2023-01-17 01:19:21

『壹』 c語言中怎麼將數字字元轉換成對應的數值最近正在自學

數字字元 減去字元0
比如 a='8';
那麼a-'0'就是對應的數字8

『貳』 C語言如何將字元串轉換到對應的01二進制的字元串,比如AB字元就變為字元串「0100000101000010」

如下子程序就可以將一個字元的ASCII碼按二進制形式輸出:
void binarystring(char c)
{
int i;
for(i=0;i<8;i++)
{ if (c & 0x80) putchar('1'); else putchar('0');
c <<= 1;
}
}
如上定義後,只要調用
binarystring('A');binarystring('B');putchar('\n');
即可輸出
0100000101000010

補充:
看了上面xie0500150326兄的回答,補充說明幾句。
xie0500150326兄的回答中的trans(char x) ,直接換成我這里的binarystring(char c),
結果一樣。

但他的演算法操作較復雜,這是因為:
計算機內的字元信息,本來就已經是二進制形式存放了,他的演算法中又採用十進制轉換二進制的演算法,反復做除法,自然是「多此一舉」,故效率較低。而本演算法直接用二進制位做判斷輸出,應該比較更合理。

他的演算法操作較復雜的另一點原因是,
該演算法是由低位到高位的次序計算,而輸出卻要求高位到低位的次序,所以要暫存再重取。如果直接採用高位到低位的次序計算,就不需要暫存可以直接輸出了。高位到低位的次序的演算法有多種,本演算法是一種。另外,也可以仿照十進制純小數轉換為二進制的演算法。這里不詳述了。

不過,因為現代計算機的速度很高,效率常常不重要了,所以這兩種方法都可以。只有在某些應用如「快速過程式控制制軟體」等情況,對效率要求較高時,才需要注意這個問題。

『叄』 C語言怎樣將字元串轉換為鏈表以及將鏈表轉換成函數

#include<stdio.h>
#include<stdlib.h>

typedefstructnode{
charch;
structnode*next;
}*LinkList,*pNode;

LinkListGetEmptyList(){
LinkListhead=(pNode)malloc(sizeof(structnode));
head->next=NULL;
head->ch=0;
returnhead;
}

LinkListCString2LinkList(charstr[]){//字元串轉換為鏈表
LinkListhead=GetEmptyList();
pNodep=head;
inti=0;
while(str[i]){
p->next=(pNode)malloc(sizeof(structnode));
p->next->ch=str[i];
++i;
p=p->next;
}
p->next=NULL;
returnhead;
}

char*LinkList2CString(LinkListhead,charstr[]){
pNodep=head->next;
inti=0;
while(p){
str[i]=p->ch;
++i;
p=p->next;
}
str[i]=0;
returnstr;
}

voidShow(LinkListhead){
pNodep=head->next;
while(p){
printf("%c",p->ch);
p=p->next;
}
putchar(' ');
}

intmain(){
chars[61],t[61];
printf("請輸入字元串:");
fgets(s,60,stdin);
LinkListhead=CString2LinkList(s);
printf("鏈表內容: ");
Show(head);
printf(" 字元串內容: ");
printf("%s ",LinkList2CString(head,t));
return0;
}

『肆』 怎樣用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值。

『伍』 c語言數字和字元的相互轉換

#include "stdio.h"

#include "math.h"

main()

{

char change(int x,int n);

int x,i,j;

char s[8],y;

printf("請輸入整數:");

scanf("%d",&x);

for(i=0;i<20;i++)

{

y=change(x,i);

if(y=='')

{

s[i]='';

break;

}

s[i]=y;

}

for(i=7;i>=0;i--)//由於字元存儲到字元數組時順序與原來相反,故在此將字元順序倒輸

if(s[i]=='')

for(j=i-1;j>=0;j--)

printf("%c",s[j]);

printf(" ");

}

char change(int x,int n)

{

int i;

char g;

for(i=0;i<=n;i++)

{

switch(x%10)

{

case 0 :g='0';break;

case 1 :g='1';break;

case 2 :g='2';break;

case 3 :g='3';break;

case 4 :g='4';break;

case 5 :g='5';break;

case 6 :g='6';break;

case 7 :g='7';break;

case 8 :g='8';break;

case 9 :g='9';break;

}

if(x==0)

{

g='';

break;

}

x=x/10;

}

return(g);

}

在C/C++語言中沒有專門的字元串變數

通常用字元數組來存放字元串。字元串是以「」作為結束符。C/C++提供了豐富的字元串處理函數,下面列出了幾個最常用的函數。

字元串是面試的重點考查部分的相關知識,通過考查字元串的相關知識可以考察程序員的編程規范以及編程習慣。並且其中包括了許多知識點,例如內存越界、指針與數組操作等。許多公司在面試時會要求應聘者寫一段復制字元串或字元串子串操作的程序。本章列舉了一些與字元串相關的面試題,有些題目要求較高的編程技巧。

以上內容參考:網路-字元串