gpt4 book ai didi

c - 这个值是如何计算的?

转载 作者:行者123 更新时间:2023-11-30 18:57:07 26 4
gpt4 key购买 nike

#define     no          14022014L

unsigned long Pack(unsigned long num){
unsigned long tmp;
unsigned char *s=NULL;
int k = 0;
int sz_long = sizeof(unsigned long);
if (num ) {
tmp=0L;
s = (unsigned char *) &tmp;
while(sz_long){
k=(--sz_long)<<3;
printf("k = %d\n", k);
k=(int)(num >> k );
printf("k=num >> k=%d\n", k);
k=k & 0xFF;
printf("k=k & 0xFF=%d\n", k);
*s++ = (unsigned char) k;
printf("tmp = %lu\n", tmp);
}
return tmp;
}
return num;
}


int main(void){
unsigned long t;
t=Pack(no);
if ( t) {
printf("t = %lu\n", t);
}
return 0;
}

输出

Pack
k = 24
k=num >> k=0
k=k & 0xFF=0
tmp = 0
k = 16
k=num >> k=213
k=k & 0xFF=213
tmp = 54528 // how ?
k = 8
k=num >> k=54773
k=k & 0xFF=245
tmp = 16110848 // how ?
k = 0
k=num >> k=14022014
k=k & 0xFF=126
tmp = 2130040064 // how ?

Main()
t = 2130040064

问:tmp的值是如何计算的?

最佳答案

该算法一次构建一个字节的长值。如果将所有格式更改为十六进制,您应该能够更清楚地看到正在建立的数字。

关于c - 这个值是如何计算的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22112257/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com