亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 3659 | 回復: 13
打印 上一主題 下一主題

[函數(shù)] [請教]一個看不懂的函數(shù) [復制鏈接]

論壇徽章:
0
跳轉到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2007-09-03 16:26 |只看該作者 |倒序瀏覽
今天看到下面這個函數(shù)

  1. int util_64to256(char *dst, char *src, char *table)
  2. {
  3.   unsigned int dw,dwcounter,i;
  4.   char *ptr = NULL;

  5.   dw=0;
  6.   dwcounter=0;
  7.   if (!dst || !src || !table) return 0;
  8.   for (i=0; i<strlen(src); i++) {
  9.     ptr = (char *) index(table, src[i]);
  10.     if (!ptr) return 0;
  11.     if (i%4) {
  12.       dw = ((unsigned int)(ptr-table) & 0x3f) << ((4-(i%4))*2) | dw;
  13.       dst[ dwcounter++ ] = dw & 0xff;
  14.       dw = dw >> 8;
  15.     } else {
  16.       dw = (unsigned int)(ptr-table) & 0x3f;
  17.     }
  18.   }
  19.   if (dw) dst[ dwcounter++ ] = dw & 0xff;
  20.   dst[ dwcounter ] = '\0';
  21.   return dwcounter;
  22. }
復制代碼


百思不得其解,想不明白為何要如此轉換?感覺好像涉及到加密解密的知識,實在是無法理解,請高手賜教

指點一下這段代碼是想用來做什么的,大致的功能及設計思路又是什么呢

[ 本帖最后由 sa101 于 2007-9-6 16:16 編輯 ]

論壇徽章:
0
2 [報告]
發(fā)表于 2007-09-03 16:42 |只看該作者
不熟悉這代碼的人還真看不懂,你看不懂去看它干什么

論壇徽章:
0
3 [報告]
發(fā)表于 2007-09-03 17:06 |只看該作者
原帖由 flw2 于 2007-9-3 16:42 發(fā)表
不熟悉這代碼的人還真看不懂,你看不懂去看它干什么



沒看之前哪知道看不懂

就是看了很久才發(fā)現(xiàn)自己看不懂啊,所以希望能有高手指點一下,積累點知識

起碼自己已經(jīng)看了很久了,想必學習起來比看書要容易了

論壇徽章:
0
4 [報告]
發(fā)表于 2007-09-04 14:55 |只看該作者
回空了一個,不好意思。請版主刪除。

[ 本帖最后由 naihe2010 于 2007-9-4 15:04 編輯 ]

論壇徽章:
0
5 [報告]
發(fā)表于 2007-09-04 14:58 |只看該作者
大概是要根據(jù)table字符串,對src進行轉換。

但是,感覺有幾處問題,根本不可能轉換成功。

1。for (i=0; i<strlen(src); i++) {
每次循環(huán)都要計算一次字符串長度,太浪費了。
2。index(table, src);
index的第一個參數(shù)是字符串指針,第二個應該是一個字符。而這個,顯然第二個參數(shù)有誤,并且,順序或者其它方面也有問題吧,調(diào)用這么多次,全是一樣的值啊,干嘛呢?

[ 本帖最后由 naihe2010 于 2007-9-4 15:13 編輯 ]

論壇徽章:
0
6 [報告]
發(fā)表于 2007-09-04 15:25 |只看該作者
base64解碼
1,table應該是base64碼表,
2,index應該是計算表中字符地址,
3,ptr-table應該是計算base64值,結果是6位的,
4,這個函數(shù)只能內(nèi)部使用,因為strlen計算不一定對,base64可能會含有換行"\n"或者"\r\n",也是正確的,但是這個函數(shù)處理的話,就失敗了,想必“if (!ptr) return 0;”
5,如果很大數(shù)據(jù)需要解碼怎么辦?顯然這個函數(shù)搞不定。base64可以做成流式處理。
6,參考 RFC3548 (http://rfc.net/rfc3548.html)

論壇徽章:
0
7 [報告]
發(fā)表于 2007-09-04 15:38 |只看該作者
原帖由 spibit 于 2007-9-4 15:25 發(fā)表
base64解碼
1,table應該是base64碼表,
2,index應該是計算表中字符地址,
3,ptr-table應該是計算base64值,結果是6位的,
4,這個函數(shù)只能內(nèi)部使用,因為strlen計算不一定對,base64可能會含有換行"\n"或 ...

剛想說,似乎是編碼程序……(不過看到index函數(shù)中src始終未變,覺得不對,應該每次指向下一個字符)
學習了

論壇徽章:
0
8 [報告]
發(fā)表于 2007-09-04 15:54 |只看該作者
flw2 的回答越來越牛叉啊

論壇徽章:
0
9 [報告]
發(fā)表于 2007-09-04 17:16 |只看該作者
原帖由 silasoni 于 2007-9-4 15:54 發(fā)表
flw2 的回答越來越牛叉啊


要不然就不是flw 2了。

論壇徽章:
0
10 [報告]
發(fā)表于 2007-09-04 20:04 |只看該作者
不理解啥意思,我的意思是我看不懂,而且確實很難看懂.
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP