2017-09-27 75 views

回答

0

忽略溢出,这给你一个unsigned long长(我相信是64位,而不是32):

unsigned long long r = 0; 
while (*pstr >= '0' && *pstr <= '9') r = r * 10 + (*pstr++ - '0'); 
0

你必须11767989860而是以字符串形式,你想让它打入整数数组{0x2,0xBD6D4664}

你可以先转换成字符串很长很长,然后从长长的变量拷贝4个字节到你的整数数组。

下面是示例程序

#include<stdio.h> 
#include<stdint.h> 
int main() 
{ 
unsigned long long ll = 0; 
uint32_t arr[2]; 
char str[]="11767989860"; 
char *tmpPtr = NULL; 
tmpPtr = &ll; 

sscanf(str,"%llu",&ll); 
printf("ll=%llu",ll); 

/*Big endian*/ 
memcpy(arr,&ll,sizeof(ll)); 
printf("\n%u %u\n",arr[0],arr[1]); 
/*Little endian*/ 
memcpy(&arr,&tmpPtr[4],sizeof(ll)/2); 
memcpy(&arr[1],&tmpPtr[0],sizeof(ll)/2); 
printf("\n%u %u\n",arr[0],arr[1]); 

return 0; 
} 
+0

这是非常有帮助的。顺便说一句,是否有可能返回一个班轮? – softwarevamp