當前位置:首頁 » 編程語言 » 漢明碼編碼與解碼用c語言實現
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

漢明碼編碼與解碼用c語言實現

發布時間: 2022-06-19 11:12:58

1. 用c語言實現算術編碼和解碼

/*我覺得應該是你相互換吧?*/
void code(char *p)
{
*p+=5;/*相應加5個數字我覺得字母不可能存在大於250的哈*/
}
void codec(char *p)
{*p-=5;}
main()
{
char a[100];
int i;
printf("Enter the string!\n");
scanf("%s",a);/*輸入字元*/
for(i=0;a[i]!='\0';i++)
{
code(a+i);/*加密*/
}
printf("\ncode string is:%s",a);
for(i=0;a[i]!='\0';i++)
{codec(a+i);}
printf("\nenter string is:%s",a);
}

2. 信道與編碼若干實驗題(要求用C語言編寫)~求高手

嵌入式軟體一般需著重考慮三個方面:性能、安全性和開發效率(包括代碼可移植性等)。
性能(運行效率)方面,匯編明顯是最高的。但匯編在安全性和開發效率方面明顯是最低的(不考慮機器語言- -)。所以除非是要求極端高性能的嵌入式平台(或者是系統實在是太簡單而沒辦法支持高級語言,orz- -),使用匯編語言的不多。
相對於C,其它高級語言的運行效率一般比較低(C程序運行效率可達匯編的80%,而其它程序可能只有C程序的80%),源代碼和目標代碼也可能會比較長。對於嵌入式系統,性能的瓶頸是非常致命的,很可能某種用C編寫的程序可以達到預期目標,而用其它語言使用同樣演算法編寫的程序就不行。(不過也正因為這個原因,在嵌入式系統上實現的可用編程語言並不多。)
基於系統的用途,安全性設計嵌入式系統也是必須考慮的一個部分(比如說用於醫療衛生設施),必須盡可能在開發期間減少潛在的錯誤。這方面C不佔優勢,但如果保證代碼嚴格遵守安全規范,也可以接受(相對而言,匯編就郁悶了- -)。
開發效率和安全性類似,也在可接受范圍之內。

3. 請問如何用C語言實現漢字和Unicode編碼的轉換 求程序

字轉換: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 <stdio.h>
#include <stdlib.h>
#include <locale.h>

int main(void)
{
char str[12];
wchar_t wstr[] = { 0x52B3, 0x788C, 0 };
setlocale(LC_ALL, "");
wcstombs(str, wstr, sizeof(str)/sizeof(char));
printf("%s", str);
return 0;
}

4. 如何用C語言實現十進制和漢明碼之間的轉換~

漢明碼非常復雜的,有 UTF、UTF-8、GBK、GB2312 等
你給我一個十進制數值,我可以同時翻譯出多個不同的漢字

5. 計算機文件編碼解碼c語言如何實現

voidcodec(char*p){*p-=5;}main(){chara[100];inti;printf("Enterthestring!\n");scanf("%s",a);/*輸入字元*/for(i=0;a[i]!='\0';i++){code(a+i);/*加密*/}printf("\ncodestringis:%s",a);for(i=0;a[i]!='\0';i++){codec(a+i);}printf("\nenterstringis:%s",a);}

6. C語言編程 ASC碼 海明碼 循環冗餘碼

這……
需要一段時間編程啊

可以先用ch=getch();輸入,然後用ch%2對每一位分離,順序存進stack,然後倒序輸出,就是ASC碼了。
另外如果位運算學的好,可以用位運算做。
海明碼和循環冗餘碼記得學過,但都還給老師了……不好意思

7. 請問如何用C語言實現漢字,和Unicode編碼的轉換

字轉換: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 <stdio.h>
#include <stdlib.h>
#include <locale.h>

int main(void)
{
char str[12];
wchar_t wstr[] = { 0x52B3, 0x788C, 0 };
setlocale(LC_ALL, "");
wcstombs(str, wstr, sizeof(str)/sizeof(char));
printf("%s", str);
return 0;
}

8. 怎樣用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值。

9. C語言中如何用編碼輸出中文字元

首先,你要明白這個不管是中文的字元,還是英文字元,還是數字等等都是編碼好了的,65對應的就是A,所以你應該去看看中文是怎麼編碼的,我記得好像一個漢字要用2個位元組來編碼,一個位元組肯定不夠用,最多才256個漢字嘛。另外,好像還有很多種編碼方式,如ASCII\UNICODE等。祝你學得愉快。
所以
char chinese[]="中華人民共和國";
printf("字元串長度=%d\n",strlen(chinese));//輸出的長度為14。
如果你只是單純地想實現輸出某些中文的變數的話,可以從文本文件中讀出來。

10. 在C語言中如何實現對編碼後的URL進行解碼

字元串與數字量的轉換,可以按照標準的編碼(如Unicode,utf8等等)進行編碼解碼。URL編碼就有編碼規則,解碼時就按既定的編碼規則進行就可以了。