簡體   English   中英

C 如何將 unsigned long long 字符串轉換為 uint32_t[]?

[英]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 = &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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM