C如何将unsigned long long的字符串转换为uint32_t []?

时间:2017-09-27 02:43:54

标签: c strtoull

是否有任何短代码将unsigned long long字符串转换为uint32_t []?

eg, 11767989860 => uint32_t[] {0xaaaa, 0xbbbb}?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

你有11767989860,但是以字符串形式,你希望它分成整数数组{0x2,0xBD6D4664}

您可以先将字符串转换为long long,然后将该long long变量中的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;
}