我有一個串x,我需要轉換爲十六進制格式:如何將包含0或1的char數組轉換爲C中的小數?
char x[5];
x[0]='0';
x[1]='1';
x[2]='0';
x[3]='1'; //x contains value of 0xA or decimal 10;
x[4]='\0';
現在我怎麼能轉換這個並將其存儲到一個無符號整型變量,因此該變量是有價值的是0xA;
謝謝。
我有一個串x,我需要轉換爲十六進制格式:如何將包含0或1的char數組轉換爲C中的小數?
char x[5];
x[0]='0';
x[1]='1';
x[2]='0';
x[3]='1'; //x contains value of 0xA or decimal 10;
x[4]='\0';
現在我怎麼能轉換這個並將其存儲到一個無符號整型變量,因此該變量是有價值的是0xA;
謝謝。
char *x = "0101";
不等於0xA或十進制10.二進制'1010'會,也許這就是你的意思?
簡單的方法來轉換字符串表示的數字是strtol,其他許多函數,如atoi。 strtol至少允許提供一個基數。
http://www.cplusplus.com/reference/clibrary/cstdlib/strtol
喜歡的東西:
unsigned long val = strtol(x, NULL, 2);
爲什麼在相反的順序x中的字符串?
char x[5] = {'1', '0', '1', '0' };
unsigned int result = 0;
int i = 0;
while(x[i] != 0)
{
result = result * 2 + x[i]-'0';
}
我認爲這對我來說不起作用,因爲我以相反的順序。謝謝。 – SSS
這個數字是101,實際上是0x5的。 – LeopardSkinPillBoxHat
@LeopardSkinPillBoxHat:取決於你閱讀它的方向。 – nhahtdh