国产蝌蚪视频在线观看_亚洲亚色_日批网站免费_亚拍一区_69网站_九热精品_最新中文在线视频_欧美视频日韩视频_国内精品二区_天堂资源站_av综合一区_国产精品久免费的黄网站_四虎免费在线观看_少妇做爰奶水狂喷视频_野花视频韩国免费观看3_久久国产精品亚洲人一区二区三区_国产日产精品_国产精品毛片_亚洲精品久久草草起碰_国产偷国产偷亚洲综合av_两个人日本WWW免费版_91麻豆视频_亚欧在线观看视频_久久久99免费_久久精品视频12_麻豆视频播放_日本高清WWW午色夜COM_公和我做好爽添厨房_成人午夜剧场在线观看_gay无套ⅹxxoo_在线观看成人福利

lizhendong
級別: 家園?
精華主題: 0
發(fā)帖數(shù)量: 0 個(gè)
工控威望: 818 點(diǎn)
下載積分: 2031 分
在線時(shí)間: 901(小時(shí))
注冊時(shí)間: 2016-10-12
最后登錄: 2025-09-13
查看lizhendong的 主題 / 回貼
樓主  發(fā)表于: 2023-07-27 18:25
C語言大俠們,如何詳細(xì)解讀這兩個(gè)函數(shù)???


char *b24e(char *buf, unsigned char *byst, size_t sizeOfBytes)
{
    int i = 0;
    unsigned char *p = byst;
    while ((size_t)(i = (p-byst)) < sizeOfBytes) {
        buf[2*i] = sel[((*p) >> 4)];
        buf[(2*i)+1] = sel[23 - ((*p) & 0x0f)];
        p++;
    }
    buf[(2*i)+1] = '\0';
    return buf;
}

unsigned char *b24d(unsigned char *buf, char *str, size_t countOfChars)
{
    size_t i;
    char *p = str;
    char *loc[2];
    unsigned char n[2];
    if (countOfChars % 2)
        return NULL;
    for (i = 0; i < (countOfChars>>1); i++) {

        loc[0] = strchr( sel, str[2*i] );
        loc[1] = strchr( sel, str[ ( 2*i ) + 1 ] );
        if (loc[0] == NULL || loc[1] == NULL)
            return NULL;
        n[0] = (unsigned char)( loc[0] - sel );
        n[1] = 23 - (unsigned char)( loc[1] - sel );
        buf = (unsigned char)((n[0] << 4) | n[1]);
    }
    return buf;
}
liuliangdt
liuliangdt
級別: 家園?
精華主題: 0
發(fā)帖數(shù)量: 0 個(gè)
工控威望: 687 點(diǎn)
下載積分: 66159 分
在線時(shí)間: 998(小時(shí))
注冊時(shí)間: 2010-09-05
最后登錄: 2025-09-14
查看liuliangdt的 主題 / 回貼
1樓  發(fā)表于: 2023-07-29 12:39
//b24e是一個(gè)返回char類型指針的函數(shù),函數(shù)帶3個(gè)參數(shù)。一個(gè)signed char類型指針,一個(gè)unsigned char類型指針,一個(gè)堆棧塊數(shù)量的參數(shù)
char *b24e(char *buf, unsigned char *byst, size_t sizeOfBytes)
{
    int i = 0;
    
    //指針p指向形參(*byst)
    unsigned char *p = byst;
    
    //第一次循環(huán)(i = p - byst) = 0強(qiáng)制轉(zhuǎn)換成(size_t)類型跟參數(shù)sizeOfBtes比較。結(jié)果大概率是真
    while ((size_t)(i = (p-byst)) < sizeOfBytes) {
        
        //sel是數(shù)組。數(shù)據(jù)(*p)右移4位作為sel數(shù)組的標(biāo)號。(sel[((*p) >> 4)]是作32位數(shù)據(jù)處理,并且是在做類似壓棧操作。buf[2 * i]是char類型數(shù)組,搞不懂為什么這樣做?)
        buf[2*i] = sel[((*p) >> 4)];
        
        //((*p) & 0x0f)是上面右移了的4位,最小是0,最大是15。sel[8~23]中的一個(gè)字節(jié)數(shù)據(jù)賦值給buf[(2*i)+1]
        buf[(2*i)+1] = sel[23 - ((*p) & 0x0f)];
      
       //指針加一
        p++;
    }
    
    //數(shù)組byst處理完后在buf后面加0,數(shù)組bug[]現(xiàn)在存的是字符串?dāng)?shù)據(jù)
    buf[(2*i)+1] = '\0';
    
   //返回指針buf
    return buf;
}

太難了,我也不知道什么意思,歡迎大神指正錯(cuò)誤。

永平县| 永春县| 龙南县| 大同县| 桦川县| 济南市| 慈利县| 荔波县| 库车县| 五华县| 贡山| 西丰县| 阜平县| 长春市| 保定市| 庐江县| 炎陵县| 保靖县| 顺义区| 马关县| 崇文区| 壶关县| 合肥市| 阿克苏市| 来安县| 惠水县| 定结县| 勐海县| 田林县| 资源县| 东源县| 玉山县| 怀远县| 蒲城县| 宁明县| 项城市| 巴林左旗| 潞城市| 横峰县| 米林县| 清流县|