int fun2(int n)
{
unsigned char *p;
p = (unsigned char *)&n;
return table[p[0]] + table[p[1]] + table[p[2]] + table[p[3]];
}
对于这个程序,我分析时也说了,按理来说应该是时间最少的,编译后只有 mov 和 add 指令。
对于C来说,可 unsigned char 可以直接从long(C里面是 int )转成byte(C里是 Char )数组。
对VB6而说,要么使用除法慢慢算,要么调用API函数复制内存,开销超大。所以 VB6 在这里就出现很奇怪的事。
至于9楼的算法,我还要晚上慢慢琢磨一下。
{
unsigned char *p;
p = (unsigned char *)&n;
return table[p[0]] + table[p[1]] + table[p[2]] + table[p[3]];
}
对于这个程序,我分析时也说了,按理来说应该是时间最少的,编译后只有 mov 和 add 指令。
对于C来说,可 unsigned char 可以直接从long(C里面是 int )转成byte(C里是 Char )数组。
对VB6而说,要么使用除法慢慢算,要么调用API函数复制内存,开销超大。所以 VB6 在这里就出现很奇怪的事。
至于9楼的算法,我还要晚上慢慢琢磨一下。
授人于鱼,不如授人于渔
早已停用QQ了