青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Codejie's C++ Space

Using C++

C++:找BUG~


    下面有個函數,用于將6個字節的字符數組‘轉換’到12字節。例如:

src[6= 0x120x340x560x780x9a0xbc }    
dst[
12= '1','2','3','4','5','6','7','8','9','a','b','c' }

    因為目標是字符串風格,為了顯示需要,dst實際使用的是13字節長度數組,如下:
unsigned char dst[13];

makeId(dst, src);

    函數如下,麻煩找下Bug。
void ISLUtil::makeId(unsigned char* id, const unsigned char* ptr)
{
    
int i = 0;
    
while(i < 6)
    
{
        unsigned 
char t = *ptr >> 4;
        
if(t >= 0 && t <= 9)
        
{
             
*id = t + '0';
        }

        
else if(t >= 0x0a && t <= 0x0f)
        
{
            
*id = t + 'a';
        }

        
else
        
{
            
*id = 0;
        }

        
        t 
= (*ptr & 0x0F);
        
++ id;
        
if(t >= 0 && t <= 9)
        
{
            
*id = t + '0';
        }

        
else if(t >= 0x0a && t <= 0x0f)
        
{
            
*id = t + 'a';
        }

        
else
        
{
            
*id = 0;
        }

        
        
++ ptr;
        
++ id;
        
++ i;
    }

    id[
12= '\0';
}


<----郁悶的分割線---->

    Y的,白癡的錯誤搞了我兩天。。。。

posted on 2011-01-18 17:10 codejie 閱讀(2011) 評論(18)  編輯 收藏 引用 所屬分類: C++隨筆而已

評論

# re: C++:找BUG~[未登錄] 2011-01-18 18:24 kkk

把兩個 *id = 0都改成
*id = '0';  回復  更多評論   

# re: C++:找BUG~ 2011-01-18 18:25 hello

*id = t + 'a';
應為
*id = t - 10 + 'a';

封裝
inline unsigned char digit2char(unsigned char d)
{
assert(d < 0x10);
if (d < 10)
{
return d +'0';
}
else
{
return d - 10 + 'a';
}
}  回復  更多評論   

# re: C++:找BUG~ 2011-01-18 18:35 w

inline unsigned char digit2char(unsigned char d)
{
assert(d < 0x10);
return "0123456789abcdef"[d];
}  回復  更多評論   

# re: C++:找BUG~[未登錄] 2011-01-18 18:55 Lucifer

#include<stdio.h>
unsigned char src[6] = { 0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc};
void makeId(unsigned char* id, const unsigned char* ptr)
{
int i = 0;
while(i < 6)
{
unsigned char t = *ptr >> 4;
if(t >= 0 && t <= 9)
{
*id = t + '0';
}
else if(t >= 0x0a && t <= 0x0f)
{
*id = t + 'a'-10;
}
else
{
*id = 0;
}

t = (*ptr & 0x0F);
++ id;
if(t >= 0 && t <= 9)
{
*id = t + '0';
}
else if(t >= 0x0a && t <= 0x0f)
{
*id = t + 'a'-10;
}
else
{
*id = 0;
}

++ ptr;
++ id;
++ i;
}
*id = '\0';
}
int main()
{
unsigned char dst[13];

makeId(dst, src);
puts((char*)dst);
return 0;
}  回復  更多評論   

# re: C++:找BUG~[未登錄] 2011-01-18 21:25 codejie

@kkk
恩,可以這樣。但這里設置為0,而不是‘0’,用于代表出錯情況。  回復  更多評論   

# re: C++:找BUG~[未登錄] 2011-01-18 21:26 codejie

@hello
是的。一看就是搞C++的,喜歡封裝。。。  回復  更多評論   

# re: C++:找BUG~[未登錄] 2011-01-18 21:28 codejie

@w
太有創意了。。  回復  更多評論   

# re: C++:找BUG~[未登錄] 2011-01-18 21:31 codejie

@Lucifer
要是按照中國教育標準看,這個是標準答案。。。我是找了兩天才發現。。。
最關鍵是就是最后的那個--‘*id = '\0';‘我直接id[12]=0,導致覆蓋其他數據了。。。白癡啊我。。。  回復  更多評論   

# re: C++:找BUG~[未登錄] 2011-01-18 21:31 codejie

@all
辛苦各位幫忙看代碼了,謝謝啊~  回復  更多評論   

# re: C++:找BUG~ 2011-01-19 02:34 電腦知識與技術博客

哈哈哈,做事要細心啊  回復  更多評論   

# re: C++:找BUG~[未登錄] 2011-01-19 10:01 haha

據說在每一個軟件公司里,都有一個掃地的老太太。很偶然地,當她經過一個程序員的身邊,掃一眼屏幕上的代碼,會低聲提醒對方說:小心,緩沖溢出了。  回復  更多評論   

# re: C++:找BUG~ 2011-01-19 10:54 codejie

@haha
您好,掃地老太太~哈哈~  回復  更多評論   

# re: C++:找BUG~ 2011-01-19 11:10 abeng

字符數組在初始化時必須有'\0'結束吧?  回復  更多評論   

# re: C++:找BUG~[未登錄] 2011-01-19 11:50 Max

我手頭上也有一些問題要提問...能夠幫我找下嗎? thanks.
Q1: 下列那邊有問題?

class A
{
A(){};
protected:
double _a;
public:
A(double a) : _a(a) {}

double eval(double a1)
{
return _a * a1;
}
virtual ~A(){}
};

class B : public A
{
public:
double eval( double b )
{
_a = _a * b;
return _a;
}
};

class C
{
public:
C() : _myA(0) {}
double _a;
A* _myA;
~C()
{
if ( _myA != 0 )
delete _myA;
}
};

class D : public A, public C
{
public:
int run(double d) { return d + _a; }
};

Q2:以下找出錯誤跟可能的危險

void main()
{
A* testB = new B;
double testVal = b.eval( 4.0 );
C testC;
testC._myA = new A(4);
C testC2 = testC;
D testD;
int testVal2 = testD.run( 3.0 );
delete testB;
}

Q3:以下程式那邊造成complier有問題? 可以保留SetValue的Const-ness嗎? 如果可以,怎麼修改?
class cTest
{
public:
cTest(){};
~cTest(){};

void SetValue( const double val ) const
{
m_value = val;
}

private:
double m_value;
};

Q4:以下程式是否有memory leak問題, 如果有,怎麼避免?
class cTest
{
public:
cTest(){};
~cTest(){};

private:
double m_double[100];
};

void function( cTest* test )
{
delete test;
test = new cTest();
}

void main( void )
{
cTest *t = new cTest();
function( t );
delete t;
}  回復  更多評論   

# re: C++:找BUG~ 2011-01-19 12:23 codejie

@abeng
這個到不一定,要看實際需要了,畢竟并不是所有的字符數組要做字符串用的,也許就是個字符集會呢?  回復  更多評論   

# re: C++:找BUG~ 2011-01-19 12:35 codejie

@Max
兄弟,你這不是找bug啊,是在出考試題吧。。。  回復  更多評論   

# re: C++:找BUG~ 2011-01-26 12:36 xiang_kgd

for ( i = 0; i < 6; i++){
sprintf(dest[i*2],"%02x",(unsigned char)src[i]);
}  回復  更多評論   

# re: C++:找BUG~ 2011-01-26 12:55 codejie

@xiang_kgd
dest前面要不要加個&號?話說,我不喜歡sprintf...  回復  更多評論   

公告

Using C++

導航

統計

留言簿(73)

隨筆分類(513)

積分與排名

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲欧美国产高清| 欧美日韩大片| 先锋a资源在线看亚洲| 老牛国产精品一区的观看方式| 国产精品99久久久久久久女警| 久久综合狠狠综合久久激情| 午夜一区二区三区不卡视频| 欧美片在线观看| 欧美国产精品v| 狠狠色狠色综合曰曰| 亚洲自拍都市欧美小说| 亚洲色在线视频| 欧美成人在线影院| 男女视频一区二区| 红桃视频成人| 久久国产一区二区| 久久精品国产v日韩v亚洲 | 欧美日韩一区二区三区四区五区| 久久久亚洲精品一区二区三区| 国产精品理论片在线观看| 亚洲看片免费| 一区二区三区|亚洲午夜| 欧美国产欧美亚州国产日韩mv天天看完整 | 日韩亚洲欧美一区| 欧美激情欧美激情在线五月| 欧美国产第一页| 亚洲激情视频在线播放| 美女视频一区免费观看| 欧美成人国产一区二区| 亚洲国产高潮在线观看| 蜜桃久久av| 亚洲欧洲一区二区在线观看| 91久久黄色| 欧美女激情福利| 在线一区二区日韩| 午夜精品久久久久影视| 国产精品视频yy9299一区| 亚洲免费在线播放| 久久久精品久久久久| 在线观看91精品国产入口| 老司机久久99久久精品播放免费| 欧美激情一区二区久久久| 日韩手机在线导航| 欧美特黄一区| 久久成年人视频| 欧美激情国产日韩| 亚洲一区二区三区三| 国产日产欧产精品推荐色| 久久久久久久久久久久久9999| 欧美福利视频网站| 中文av一区二区| 国产一区二区电影在线观看| 久久中文精品| 一本久久知道综合久久| 久久久999精品| 亚洲伦理在线观看| 国产精品免费看久久久香蕉| 久久九九久精品国产免费直播| 亚洲高清视频一区二区| 亚洲欧美在线磁力| 在线观看日韩| 国产精品久久久久三级| 久久免费的精品国产v∧| 亚洲伦理在线免费看| 久久精品视频免费| 夜夜狂射影院欧美极品| 国产亚洲欧美激情| 欧美日韩精品欧美日韩精品一| 先锋影音国产一区| 亚洲精品免费电影| 久久亚洲色图| 亚洲欧美日韩国产精品| 最新国产成人在线观看| 国产区欧美区日韩区| 欧美激情视频一区二区三区不卡| 欧美一区二区大片| 一本色道久久| 亚洲精品1区2区| 久久综合久久久| 欧美一级夜夜爽| 99re6热在线精品视频播放速度| 国产日韩精品视频一区二区三区| 欧美精品一区二区三区蜜臀| 久久美女性网| 欧美一区二区久久久| 亚洲作爱视频| 亚洲精品一二| 亚洲风情亚aⅴ在线发布| 老司机午夜精品视频在线观看| 亚洲欧美日本伦理| 亚洲午夜免费视频| 99热在线精品观看| 亚洲国产婷婷香蕉久久久久久99| 国产午夜精品麻豆| 国产精品亚洲综合色区韩国| 欧美日韩一区二区三区| 欧美日本精品一区二区三区| 久久伊人一区二区| 久久久噜噜噜久噜久久| 欧美在线视频观看| 欧美一区二区私人影院日本 | 久久综合一区二区| 亚欧成人在线| 香蕉久久精品日日躁夜夜躁| 亚洲欧美日韩精品久久奇米色影视| 日韩亚洲视频在线| 99精品热视频| 中文久久乱码一区二区| 夜夜狂射影院欧美极品| 99热这里只有成人精品国产| 日韩视频一区二区在线观看 | 欧美午夜电影在线| 欧美午夜大胆人体| 国产精品美腿一区在线看| 国产精品亚洲综合天堂夜夜| 国产日韩欧美不卡在线| 国产伦精品一区二区三区视频黑人| 国产精品一区二区在线观看| 国产目拍亚洲精品99久久精品| 国产噜噜噜噜噜久久久久久久久 | 久久综合国产精品| 欧美成人情趣视频| 91久久夜色精品国产九色| 亚洲精品在线看| 亚洲一区二区三区久久| 午夜一区二区三区不卡视频| 久久精品国产成人| 免费日韩av片| 欧美天堂亚洲电影院在线播放| 国产精品乱人伦一区二区| 国产亚洲福利社区一区| 一色屋精品视频在线观看网站| 亚洲福利精品| 宅男噜噜噜66一区二区| 久久国产直播| 亚洲国产精品久久久久秋霞影院| 夜夜嗨av色一区二区不卡| 亚洲欧美中文日韩v在线观看| 久久裸体视频| 欧美天天在线| 精品成人在线观看| 中日韩美女免费视频网站在线观看| 欧美尤物一区| 亚洲国产欧美不卡在线观看| 亚洲免费视频在线观看| 老司机一区二区| 国产精品人成在线观看免费| 在线观看一区二区精品视频| 一区二区欧美视频| 久久夜色精品国产噜噜av| 亚洲人屁股眼子交8| 欧美一区二区三区精品电影| 欧美另类在线观看| 国产一区二区三区久久久久久久久| 亚洲精品韩国| 久久精品在线| 一区二区不卡在线视频 午夜欧美不卡在| 久久成人精品一区二区三区| 欧美日韩在线播放一区| 在线观看中文字幕不卡| 午夜久久久久| 亚洲精品日韩精品| 久久最新视频| 国产无一区二区| 亚洲一级在线观看| 亚洲第一天堂av| 久久精品国产精品| 国产精品视频导航| 亚洲一级黄色片| 亚洲精华国产欧美| 蜜桃伊人久久| 亚洲春色另类小说| 久久久久久夜| 香蕉精品999视频一区二区| 欧美午夜剧场| 99这里只有精品| 亚洲国产欧美另类丝袜| 久久一区二区三区国产精品| 国产一区在线观看视频| 欧美亚洲在线播放| 亚洲影院免费观看| 国产精品卡一卡二| 亚洲天堂成人| 夜夜嗨av色一区二区不卡| 欧美精品在欧美一区二区少妇| 亚洲大片免费看| 裸体丰满少妇做受久久99精品| 午夜精品久久久久久久久| 国产精品人人做人人爽人人添| 亚洲午夜黄色| 在线性视频日韩欧美| 欧美日韩一区在线| 亚洲欧美日韩国产| 亚洲天堂男人| 国产麻豆午夜三级精品| 欧美伊人精品成人久久综合97| 亚洲欧美欧美一区二区三区| 国产欧美日韩一区二区三区| 性做久久久久久久免费看| 午夜天堂精品久久久久|