Zero Lee的专栏

非printf形式的十六进制和二进制打印(雅虎面试题)

编程实现:把十进制数(long型)分别以二进制和十六进制形式输出,不能使用printf系列

 1 template <typename T>
 2 void displayHexBin(const T& v)
 3 {
 4     const unsigned char c2h[] = "0123456789ABCDEF";
 5     const unsigned char c2b[] = "01";
 6 
 7     unsigned char* p = (unsigned char*)&v;
 8     char* buf = new char [sizeof(T)*2+1];
 9     char* ptmp = buf;
10     p = p + sizeof(T)-1;
11     for (int i = 0; i < sizeof(T); i++--p) {
12         *buf++ = c2h[*>> 4];
13         *buf++ = c2h[*& 0x0F];
14     }
15     *buf = '\0';
16     printf("hex format displayed as %s\n", ptmp);
17 
18     delete [] ptmp;
19     p = (unsigned char*)&v; p = p + sizeof(T)-1;
20     ptmp = buf = new char [sizeof(T)*8+1];
21     for (int i = 0; i < sizeof(T); i++--p) {
22         for (int j = 0; j < 8; j++)
23             *buf++ = c2b[(*>> (7-j)) & 0x1];
24     }
25     *buf = '\0';
26     printf("bin format displayed as %s\n", ptmp);
27     delete [] ptmp;
28 }
29 


posted on 2011-03-11 19:14 Zero Lee 阅读(1563) 评论(2)  编辑 收藏 引用 所属分类: Data structure and algorithms

评论

# re: 非printf形式的十六进制和二进制打印(雅虎面试题) 2011-12-14 21:58 zhouciming

你不是用printf输出的吗?题目要求是不用printf输出,真不知你怎么理解题目意思的?????!!!!  回复  更多评论   

# re: 非printf形式的十六进制和二进制打印(雅虎面试题) 2012-01-16 09:29 没有了

是不能用格式化输出的意思吧@zhouciming
  回复  更多评论   


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