您可以使用此方法(位操作):
char *hexstring = "08fc0021";
int aux;
sscanf(hexstring, "%x", &aux);
printf("aux = 0x%x = %d\n", aux, aux);
int varA = (aux & 0xFFFF0000) >> 16, varB = aux & 0x0000FFFF;
printf("varA = 0x%x = %d\n", varA, varA);
printf("varB = 0x%x = %d\n", varB, varB);
結果:
AUX = 0x8fc0021 = 150732833
翻= 0x8fc = 2300
varB = 0×21 = 33
編輯:
或者這種方法(字符串操作):
// requires a hexstring length of 8 or more sophisticated logic
char *hexstring = "08fc0021";
int len = strlen(hexstring);
char varA[5], varB[5];
for(int i = 0; i<len; i++)
{
if(i < 4) varA[i] = hexstring[i];
else varB[i-4] = hexstring[i];
}
varA[4] = varB[4] = '\0';
int varAi, varBi;
sscanf(varA, "%x", &varAi);
sscanf(varB, "%x", &varBi);
printf("varAi = 0x%x = %d\n", varAi, varAi);
printf("varBi = 0x%x = %d\n", varBi, varBi);
相同的結果:
varAi = 0x8fc = 2300
varBi = 0×21 = 33
想想它:如何將字符串分成兩個字符串?谷歌如果不可行,就自己去做。 – Downvoter
'sscanf',它會給你32位的數字0x08fc0021。現在你可以把這個數字分成兩個數字0x08fc和0x0021。這非常非常基本的操作留給讀者。 –
thx you two,for a fast answer。例如,可以做一個簡單的「二進制」操作(向左/右移位4位,以此類推),以獲得想要的信息。 我後來的是如果有一個功能可以完成這項工作的構建。例如,通過你定義一個起始內存地址......例如,ala sscanf ..在那裏你給出了字符串的開始和結束地址 – KapaA