posts - 3, comments - 2, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理
不罗嗦,直接上代码(主要用数字除以16的商和对16取余进行判断,这个不是最高效的方法,在此抛砖引玉):
 1 unsigned char* CGetHexStringDlg::TQ_GetHexStringEx(unsigned int nNumber, unsigned int nCount)
 2 {
 3     unsigned char* pBuff = new unsigned char[nCount];
 4     memset(pBuff, '0', nCount);            //所有位置'0'
 5 
 6     static const char hex_map[] = "0123456789ABCDEF";
 7 
 8     int nRemainder    = 0;            //除16的余数
 9     int nConsult    = 0;            //除16的商
10     int nPos        = nCount - 1;    //指针位置
11     int nTimes        = 0;            //运算次数
12 
13     while (nPos >= 0)
14     {
15         nRemainder    = nNumber%16;
16         nConsult    = nNumber/16;
17 
18         if (nRemainder == 0)        //余数为0
19         {
20             if (nConsult != 0)        //商不为0
21             {
22                 if (nConsult >= 16)
23                 {
24                     nNumber = nNumber/16;
25                     nPos--;
26                 }
27                 else
28                 {
29                     nPos--;
30                     pBuff[nPos] = hex_map[nConsult];
31                     break;
32                 }
33             }
34             else                    //nNumber为0
35             {
36                 if (nTimes == 0)    //nNumber为0且运算次数为1
37                 {
38                     pBuff[nPos] = hex_map[0];
39                     break;
40                 }
41                 else
42                     break;
43             }
44         }
45         else
46         {
47             pBuff[nPos] = hex_map[nRemainder];
48             nNumber        = nNumber - nRemainder;
49         }
50 
51         nTimes++;
52     }
53 
54     pBuff[nCount] = NULL;
55 
56     return pBuff;
57 }

Feedback

# re: 将十进制数转化为定长的十六进制数  回复  更多评论   

2012-06-25 15:31 by cnsworder
可以用移位运算来代替%,/运算来提高运算效率

# re: 将十进制数转化为定长的十六进制数  回复  更多评论   

2012-06-26 08:31 by BugYang
@cnsworder
说来惭愧,我对移位操作不熟悉,虽然做过一些自动化项目,但是底层操作实在是让我汗颜!

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理