怎麼用c函式實現ascii碼和unicode碼的轉換

2022-02-16 09:51:57 字數 5442 閱讀 4864

1樓:匿名使用者

說明:函式名稱

int strunicode2gb(char *strsourcer, char *strdest,int n)

轉換unicde字串到gb碼,返回漢字數

輸入( unicode 源串,gb2312/ascii混合編碼串,unicode位元組數 必須是偶數!!!)

#include

const unsigned short int unicode_gb2312[2] =

; u_int16_t unicode2gbcode(u_int16_t iunicode)

if ((iunicode>=0x20&&iunicode<=0x5a)||(iunicode>=0x61&&iunicode<=0x7a))

return iunicode;

for (i=0,j=0,n=sizeof(unicode_gb2312)/sizeof(unicode_gb2312[0])-1;n>0;n>>=1,++j)

if (unicode_gb2312[i][0]0;n-=2,psrc+=2,++i,++pdest)

else if (tmphz>0x00&&tmphz<=0x7f)

else

} *pdest='\0';

return i;}

2樓:幻溪先生

void ascii2unicode(u8 *pu8filename)

}for(i=0;i0)}

怎樣用c語言實現漢字和ascii碼到unicode碼的轉換?

3樓:匿名使用者

可以用 libiconv ,gnu project,協議是 lgpl。

4樓:手機使用者

1、ascii碼

string s = "樑";

system.text.encoding gb2312 = system.text.encoding.getencoding("gb2312");

byte gb = gb2312.getbytes(s);

這時gb中有兩個數字193(11000001),186(10111010)

2、非ascii編碼

string s = "樑";

system.text.encoding gb2312 = system.text.encoding.getencoding("gb2312");

byte gb = gb2312.getbytes(s);

這時gb中有兩個數字193(11000001),186(10111010)

3、unicode

unicode當然是一個很大的集合,現在的規模可以容納100多萬個符號。每個符號的編碼都不一樣。c#中如果你想看看某個漢字的unicode編碼可以使用如下**:

string s = "樑";

byte unicode = encoding.unicode.getbytes(s);

這時unicode中有兩個數字129(10000001),104(1101000)

c# 中實現 ascii碼和 unicode 碼的轉換?

5樓:匿名使用者

1、ascii碼

string s = "樑";

system.text.encoding gb2312 = system.text.encoding.getencoding("gb2312");

byte gb = gb2312.getbytes(s);

這時gb中有兩個數字193(11000001),186(10111010)

2、非ascii編碼

string s = "樑";

system.text.encoding gb2312 = system.text.encoding.getencoding("gb2312");

byte gb = gb2312.getbytes(s);

這時gb中有兩個數字193(11000001),186(10111010)

3、unicode

unicode當然是一個很大的集合,現在的規模可以容納100多萬個符號。每個符號的編碼都不一樣。c#中如果你想看看某個漢字的unicode編碼可以使用如下**:

string s = "樑";

byte unicode = encoding.unicode.getbytes(s);

這時unicode中有兩個數字129(10000001),104(1101000)

c語言 ascii 轉換為unicode(十進) 30

6樓:匿名使用者

我不是很懂你的意思,但是就我個人的想法,你應該想實現這樣的功能吧:

#include

#include

#include

#include

void main()

;setlocale(lc_all,"chs");

mbstowcs(out , p , strlen(p));

puts(out);}

7樓:匿名使用者

這個可以,

你試試。

#include

#include

#include

#include

int main()

;setlocale( lc_all , "chs" );

mbstowcs(out , p , strlen(p) );

printf("%s" , out );

return 0;}

請問如何用c語言實現漢字和unicode編碼的轉換 求程式

8樓:

字轉換:wctomb、mbtowc,wc 指 wide charactor,mb 指 multi-byte。

字串轉換:wcstombs、mbstowcs,wcs 和 mbs 的 s 指 string。

這 4 個函式是 c 標準函式庫函式中的。如果只是在 windows 平臺下程式設計,可直接呼叫 windows api 函式 widechartomultibyte 和 multibytetowidechar 實現。但是如果呼叫標準庫函式的話,在 linux 下也是有效的。

呼叫標準庫函式,首先必須包含 locale.h 並呼叫 setlocale(lc_all, "") 後才能正確轉換。windows 下的 multi-byte 是 ansi 編碼的,wide charactor 是 unicode (utf-16) 編碼,而 linux 下的 multi-byte 是 utf-8 編碼的,wide charactor 是 unicode (utf-32) 編碼。

#include

#include

#include

int main(void)

;setlocale(lc_all, "");

wcstombs(str, wstr, sizeof(str)/sizeof(char));

printf("%s", str);

return 0;}

9樓:

學會使用libiconv庫吧

c語言字元與ascii碼的轉換

10樓:會飛的小兔子

#include

voidmain()

unsignedchara;

printf("enterchar:");

scanf("%c",&a);

printf("ascii=%d",a);//強制轉化為ascii碼擴充套件資料c語言ascii編碼的**

ascii碼

一個二進位制位(bit)有0、1兩種狀態,一個位元組(byte)有8個二進位制位,有256種狀態,每種狀態對應一個符號,就是256個符號,從00000000到11111111。美國製定了一套英文字元與二進位制位的對應關係,稱為ascii碼,沿用至今。

ascii碼規定了128個英文字元與二進位制的對應關係,佔用一個位元組(實際上只佔用了一個位元組的後面7位,最前面1位統一規定為0)。例如,字母a的的ascii碼為01100001,那麼你暫時可以理解為字母a儲存到記憶體之前會被轉換為01100001,讀取時遇到01100001也會轉換為a。

11樓:俞曦濮陽德澤

//函式

名:chartohex()

//功能描述:把ascii字元轉換為16進位制

//函式說明:

//呼叫函式:

//全域性變數:

//輸入:ascii字元

//返回:16進位制

unsigned

char

chartohex(unsigned

char

bhex)

//函式

名:hextochar()

//功能描述:把16進位制轉換為ascii字元

//函式說明:

//呼叫函式:

//全域性變數:

//輸入:16進位制

//返回:ascii字元

unsigned

char

hextochar(unsigned

char

bchar){

if((bchar>=0x30)&&(bchar<=0x39))

bchar

-=0x30;

else

if((bchar>=0x41)&&(bchar<=0x46))//大寫字母

bchar

-=0x37;

else

if((bchar>=0x61)&&(bchar<=0x66))//小寫字母

bchar

-=0x57;

else

bchar

=0xff;

return

bchar;

12樓:

ascii字元值範圍是0x00到0x7f。因為有不可見和鍵盤不好拍的字元。所以你可用整型數輸入。

unsigned char a[100],b[100];

unsigned char x,y,z;

scanf("%d",&a[i]);

if (a[i] > 0x7f || a[i] < 0) 重輸;

加減運算 就用算數表示式。例如

y = a[1]+a[2];

b[2] = a[1] + a[2] - a[3];

unsigned char 就是8bit無符號整數。

加減運算後很可能超界,即大於0x7f或小於0。

加減運算後的字元很可能是不可列印字元,或「看不見」的字元。

所以你的題目有問題。

13樓:匿名使用者

你問得太模糊了,你是讓我口頭告訴你怎麼做,還是用c語言編一個程式給你呢

c語言用函式實現用冒泡法對整數升序和降序排列麻煩寫全些

include void sort1 int a,int n void sort2 int a,int n int i,j,t for i 0 i main 降序 include define len 10 void bubble sort desc int arr,int len int main...

C 中pow函式,C 中pow(x,y)函式怎麼用?最好給舉個例子

2型別是整型,0.5屬於浮點數,而你的函式宣告裡面第一個引數是浮點數,第二個引數是整型的,int轉float double可以隱式轉換,編譯器允許這種轉換,但是float double不能隱式轉換成int,這樣可能會造成資料丟失,編譯器不允許,除非你強制轉換 在vc 6.0中原型為double po...

用c語言怎麼連線資料庫呢,用C語言怎麼實現與資料庫的連線

25.2.2.c api函式概述 這裡歸納了c api可使用的函式,並在下一節詳細介紹了它們。請參見25.2.3節,c api函式描述 函式 描述 mysql affected rows 返回上次update delete或insert查詢更改 刪除 插入的行數。mysql autocommit 切...