[英]C how to convert string of unsigned long long to uint32_t[]?
是否有任何短代码将 unsigned long long 字符串转换为 uint32_t[]?
eg, 11767989860 => uint32_t[] {0xaaaa, 0xbbbb}?
忽略溢出,这会给你一个 unsigned long long (我认为是 64 位,而不是 32):
unsigned long long r = 0;
while (*pstr >= '0' && *pstr <= '9') r = r * 10 + (*pstr++ - '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 = ≪
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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.