Re: [問題]請問在FreeBSD底下設計程
※ 引述《gmobug (低等動物)》之銘言:
> > 我覺得你的結果是有點詭異的...
> > 為什麼同一個結果,不同次引用卻會有不同的值。
> 我就是覺得他詭異所以才問>_<
> 以下暫不討論malloc要free,free應該不是問題重點
> unsigned char * b64_encode(unsigned char *str, uint32_t len){
> unsigned char * b64_result;
> b64_len = (len%3==0)?(len/3*4+1):((len+3-(len%3))/3*4+1);
> b64_result = (unsigned char *) malloc(b64_len);
> ...(略)
> return b64_result;
> }
> unsigned char * checksum_1(unsigned char * ary, uint32_t len){
> uint32_t i;
> unsigned char tmp[512], *lala;
> for(i=0;i<512;i++){
> tmp[i]=0;
> }
> for(i=0;i<len;i++){
> tmp[i%512] ^= ary[i];
> }
> return b64_encode(tmp, 512);
> }
> main(){
> unsigned int k, i=0;
> unsigned char *p;
> struct stat fst;
> unsigned char * kkk;
> k = open("kanon.ove", O_RDWR);
> fstat(k, &fst);
> p = (unsigned char *) mmap(0, (uint32_t) fst.st_size, PROT_WRITE | PROT_READ, MAP_SHARED, k, 0);
> kkk=checksum_1(p, fst.st_size);
> printf("res1: %d, res2: %s%s\n", checksum_0(p, fst.st_size), kkk, kkk);
> munmap(p, fst.st_size);
> }
> 我的main()這部分只是寫來測試所以有點雜亂..
> 前兩個函式另外放在別的.h裡
> 用以上的code跑出來結果是
> res1: 135027, res2: (null)J1jU81sDfVKp6ra8B8XsA73XhBK0B7VQYeUMpmOXTqYZlX7PNd59CddZwDQOI14PSNtO0K3tfb11ksA+DT2l7VoByGlZkY49bqBYqNm1vQJOPnnRScEDN8Wpj0Zpdzn85b6UOrYasCl4tIywS11cgRB8/JdUiAXOsFhqE14puTBMqE3chCVma0FTarbawCSiWZurpWXWQtPTf
呃..那個base64編出來的東西好像太長了貼上來排版有點怪不過應該沒差吧
對了那個checksum_0結果是沒問題的
所以就不貼程式碼了
有點長
--
★ <師大附中 BBS 站> bbs.hs.ntnu.edu.tw ★ From: sw169-71-109.adsl.seed.net.tw
討論串 (同標題文章)
FreeBSD 近期熱門文章
PTT數位生活區 即時熱門文章