阅读:3401回复:16
哦哦,大家来b4微软了
from nt4 src:
/* * Displays a byte in hexadecimal */ VOID PrintHexChar( UCHAR c ) { PRINTF( "%c%c", "0123456789abcdef"[ (c>>4)&7 ], "0123456789abcdef"[ c&7 ] ); } /* * Displays a buffer of data in hexadecimal */ VOID PrintHexBuf( PUCHAR buf, ULONG cbuf ) { while( cbuf-- ) { PrintHexChar( *buf++ ); PRINTF( " " ); } } // by wannabe |
|
沙发#
发布于:2004-10-18 11:14
b4
|
|
板凳#
发布于:2004-11-01 08:45
没发现吗?微软写的代码很精妙,考虑了很多东西,同时兼顾倒安腾系列的处理器。
|
|
地板#
发布于:2004-12-05 11:00
没看出来^_^
|
|
地下室#
发布于:2004-12-05 12:48
哈哈 :P
|
|
|
5楼#
发布于:2004-12-05 17:49
????????????
|
|
6楼#
发布于:2009-06-12 16:18
"0123456789abcdef"[ (c>>4)&7 ]
头一次看到数组也可以这样访问,赞! |
|
7楼#
发布于:2009-06-17 09:08
很有想法嘛呵呵
|
|
|
8楼#
发布于:2009-06-29 23:02
其实还是不错的,o(∩_∩)o...
|
|
9楼#
发布于:2009-06-30 21:34
写的中规中矩啊
|
|
10楼#
发布于:2009-07-08 09:24
哈哈 :P
|
|
11楼#
发布于:2009-07-08 09:25
|
|
12楼#
发布于:2009-07-08 09:25
|
|
13楼#
发布于:2009-07-08 10:58
写的好吗?没看出来。
如果这是一个被频繁调用的函数的话,这样的写法太有问题了!printf何许人也?如果你看过C runtime library的相关细节,你就会知道,这是个超级大的家伙,即使在优化模式下,它的实现(code段)也有超过2k!为了一个HEX的打印,就导入一个2k的大家伙,执行效率还极差,你们觉得值得吗? ASCII2HEX的函数应该这样写: VOID HEX2STR(UCHAR c, char s[2]) { static char* hex = "0123456789ABCDEF"; s[0] = hex[(c >> 4)]; s[1] = hex[c & 0x0F]; } |
|
14楼#
发布于:2009-07-09 14:32
PRINTF( "%c%c", "0123456789abcdef"[ (c>>4)&7 ], "0123456789abcdef"[ c&7 ] );
&7? 不是&0x0F吗? |
|
15楼#
发布于:2009-08-03 09:18
不错啊,多节省代码啊!!!
|
|
16楼#
发布于:2009-08-30 12:24
代码写的相当简洁,很好,不愧是微软
|
|