是否有任何短碼轉換無符號長串長uint32_t的[]?Ç怎樣的無符號的字符串轉換長長到uint32_t的[]?
eg, 11767989860 => uint32_t[] {0xaaaa, 0xbbbb}?
是否有任何短碼轉換無符號長串長uint32_t的[]?Ç怎樣的無符號的字符串轉換長長到uint32_t的[]?
eg, 11767989860 => uint32_t[] {0xaaaa, 0xbbbb}?
忽略溢出,這給你一個unsigned long長(我相信是64位,而不是32):
unsigned long long r = 0;
while (*pstr >= '0' && *pstr <= '9') r = r * 10 + (*pstr++ - '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 = ≪
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;
}
這是非常有幫助的。順便說一句,是否有可能返回一個班輪? – softwarevamp
字符串如 「11767989860」 是字符? – odin
是的,他們是char *。 – softwarevamp
但11767989860是'{0X2,0xbd6d4664}',而'{加上0xAAAA,0xbbbb}'或者是2863315899或187647121210299,這取決於你如何看待它。 –