㈠ 如何用c語言寫base64來解碼dat文件還原為GIF圖

LZ是要解什麼游戲的
代碼我用,不過是c#的

㈡ 求純C語言的加密解密演算法編碼(AES、DES。。。。。。)

請選擇參考資料的網頁
BeeCrypt 是一個包含高度優化的C語言加密庫,包括MD5,SHA-等多種加密解密演算法,該庫是通用函數庫,並與任何版權無關。符合GNU開放源碼要求

點擊下列連接可以直接下載源代碼

http://prdownloads.sourceforge.net/beecrypt/beecrypt-4.1.2.tar.gz?download

㈢ 調用base64decode要加什麼頭文件

在C語言家族程序中,頭文件被大量使用。一般而言,每個C++/C程序通常由頭文件(header files)和定義文件(definition files)組成。頭文件作為一種包含功能函數、數據介面聲明的載體文件,用於保存程序的聲明(declaration),而定義文件用於保存程序的實現 (implementation)。
C++/C程序的頭文件以「.h」為後綴。以下是假設名稱為 graphics.h的頭文件:

#ifndef GRAPHICS_H (作用:防止graphics.h被重復引用)

#define GRAPHICS_H

#include.... (作用:引用標准庫的頭文件)

...

#include... (作用:引用非標准庫的頭文件)

...

void Function1(...); (作用:全局函數聲明)

...

class Box (作用:類結構聲明)

{

...

};

#endif

從以上例子可以看出,頭文件一般由三部分內容組成:(1)頭文件開頭處的版權和版本聲明;(2)預處理塊;(3)函數和類結構聲明等。在頭文件中,用 ifndef/define/endif結構產生預處理塊,用 #include 格式來引用庫的頭文件。頭文件的這種結構,是利用C語言進行開發軟體所通常具備的,屬於公有知識。

一般在一個應用開發體系中,功能的真正邏輯實現是以硬體層為基礎,在驅動程序、功能層程序以及用戶的應用程序中完成的。根據以上示例,可以發現頭文件的主要作用在於調用庫功能,對各個被調用函數給出一個描述,其本身不包含程序的邏輯實現代碼,它只起描述性作用,告訴應用程序通過相應途徑尋找相應功能函數的真正邏輯實現代碼。用戶程序只需要按照頭文件中的介面聲明來調用庫功能,編譯器會從庫中提取相應的代碼。

㈣ 求注釋以下C語言代碼

這是一個背包問題,該演算法已經是最簡單的了,還有遞歸演算法,我覺得更麻煩。對你的代碼進行解釋如下://背包問題:有m件物品和一個承重為t的背包。第i件物品的重量是w[i],價值是v[i]。//求解將哪些物品裝入背包可使這些物品的重量總和不超過背包承重量t,且價值總和最大。#include #include #include int f[1010],w[1010],v[1010];//f記錄不同承重量背包的總價值,w記錄不同物品的重量,v記錄不同物品的價值int max(int x,int y){//返回x,y的最大值 if(x>y) return x; return y;}int main(){ int t,m,i,j; memset(f,0,sizeof(f)); //總價值初始化為0 scanf("%d %d",&t,&m); //輸入背包承重量t、物品的數目m for(i=1;i=w[i];j--){ f[j]=max(f[j-w[i]]+v[i],f[j]); //在放入第i個物品前後,檢驗不同j承重量背包的總價值,如果放入第i個物品後比放入前的價值提高了,則修改j承重量背包的價值,否則不變 } } printf("%d",f[t]); //輸出承重量為t的背包的總價值 printf("\n"); getch(); return 0;}

㈤ c語言怎樣用base64實現迅雷地址轉換

葉劍飛
*
*
*
* 使用說明:來源
* 命令行參數說明:若有「-d」參數,則為base64解碼,否則為base64編碼。
* 若有「-o」參數,後接文件名,則輸出到標准輸出文件。
* 輸入來自標准輸入stdin,輸出為標准輸出stdout。可重定向輸入輸出流。
*
* base64編碼:輸入任意二進制流,讀取到文件讀完了為止(鍵盤輸入則遇到文件結尾符為止)。
* 輸出純文本的base64編碼。
*
* base64解碼:輸入純文本的base64編碼,讀取到文件讀完了為止(鍵盤輸入則遇到文件結尾符為止)。
* 輸出原來的二進制流。
*
*/

㈥ h5 audio怎麼播放base64

h5 audio怎麼播放base64
本程序分別設了四個數組, 輸入的一行字元的空格分段分別裝入四個數組。然後分別輸出這四個數組中的字元串。
在前面介紹過,scanf的各輸入項必須以地址方式出現,如 &a,&b等。但在前例中卻是以數組名方式出現的,這是為什麼呢?
這是由於在C語言中規定,數組名就代表了該數組的首地址。整個數組是以首地址開頭的一塊連續的內存單元。
如有字元數組char c[10],在內存可表示如圖。
C[0] C[1] C[2] C[3] C[4] C[5] C[6] C[7] C[8] C[9]
設數組c的首地址為2000,也就是說c[0]單元地址為2000。則數組名c就代表這個首地址。因此在c前面不能再加地址運算符&。如寫作scanf("%s",&c);則是錯誤的。 在執行函數printf("%s",c) 時,按數組名c找到首地址,然後逐個輸出數組中各個字元直到遇到字元串終止標志'\0'為止。
7.3.6 字元串處理函數
C語言提供了豐富的字元串處理函數, 大致可分為字元串的輸入、輸出、合並、修改、比較、轉換、復制、搜索幾類。 使用這些函數可大大減輕編程的負擔。用於輸入輸出的字元串函數,在使用前應包含頭文件"stdio.h",使用其它字元串函數則應包含頭文件"string.h"。
下面介紹幾個最常用的字元串函數。

㈦ C語言編程:編寫一個函數base64加密

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

constchar*chlist="+/";

intencode_string(char*str,unsignedintlength,char*stat){
chars[103];
inti,j;
unsignedtemp;
if(length<=0)return1;
if(length>100)return2;
str[length]='';
strcpy(s,str);
while(strlen(s)%3)strcat(s,"=");
for(i=0,j=0;s[i];i+=3,j+=4){
=s[i];
temp=(temp<<8)+s[i+1];
temp=(temp<<8)+s[i+2];
stat[j+3]=chlist[temp&0X3F];
temp>>=6;
stat[j+2]=chlist[temp&0X3F];
temp>>=6;
stat[j+1]=chlist[temp&0X3F];
temp>>=6;
stat[j+0]=chlist[temp&0X3F];
}
stat[j]='';
return0;
}

intIndex(charch){
inti;
for(i=0;chlist[i];++i){
if(chlist[i]==ch)
returni;
}
return-1;
}

voiddecode_string(char*s,char*t){
unsignedtemp;
inti,j,k,len=strlen(s);
if(len%4){
printf("無效數據。 ");
exit(2);
}
for(i=0,j=0;i<=len;i+=4,j+=3){
temp=0;
for(k=0;k<4;++k)
temp=(temp<<6)+Index(s[i+k]);
for(k=2;k>=0;--k){
t[j+k]=temp&0XFF;
temp>>=8;
}
}
t[j+k]='';
}

intmain(){
chars[100]="1a2a3s4dff5fj6u7M8B9P0O1U2";
chart[150],u[100];
printf("s=%s ",s);
encode_string(s,strlen(s),t);
printf("t=%s ",t);
decode_string(t,u);
printf("u=%s ",u);
return0;
}

㈧ C語言的Base64解碼

加一個break跳出循環即可。

#include<stdio.h>
#include<string.h>
intmain(void)
{
chary[4000]/*原文本*/,b[3999*4/3]/*待解的Base64碼*/,mb[64]/*Base64碼表*/;
inti,j/*i,j為兩個計數用的變數*/,zu/*將待解的Base64碼分成4個字元一組,zu用於記錄第幾組*/;
for(i=0;i<26;++i)mb[i]=i+65;
for(i=0;i<26;++i)mb[i+26]=i+97;
for(i=0;i<10;++i)mb[i+52]=i+48;
mb[62]='+';
mb[63]='/';/*對碼表賦值*/
for(i=0;i<4000;++i)y[i]=0;
for(i=0;i<3999*4/3;b[i++]=0);/*清空兩個字元串*/
fgets(b,3999*4/3-1,stdin);/*輸入Base64碼*/
for(i=0;i<strlen(b)-1;++i)/*處理b中的每個字元*/
for(j=0;j<64;++j)
if(mb[j]==b[i])
{
b[i]=j; /*尋找各字元對應的碼表序號,貌似就是這里出的問題*/
break;/*一找到就跳出,可避免重復比較。沒有這句會重復比較到最後,如果j的值剛好落在字元數字的ASCII碼中,會引起的重復的給b[i]賦值*/
}
for(zu=0;zu<(strlen(b)-1)/4;++zu)/*Base64解碼*/
{
y[zu*3+0]=((b[zu*4+0]<<2))|(b[zu*4+1]>>4);
y[zu*3+1]=((b[zu*4+1]<<4))|(b[zu*4+2]>>2);
y[zu*3+2]=((b[zu*4+2]<<6))|b[zu*4+3];
}
printf("%s ",y);/*輸出原文本*/
return0;
}

㈨ c語言編程