我剛剛被要求使用C-I,通常使用Python和一些Java,而且我一直在遇到一些問題。將字符數組轉換爲十六進制C
我創建了一個函數,它將base-10 unsigned int轉換爲表示等效十六進制的字符數組。現在我需要能夠將uint32_t類型的變量設置爲這個'hex';我能做些什麼來確保這個char []被視爲一個實際的十六進制值?
的代碼如下:
int DecToHex(long int conversion, char * regParams[])
{
int hold[8];
for (int index = 0; conversion > 0; index++)
{
hold[index] = conversion % 16;
conversion = conversion/16;
}
int j = 0;
for (int i = 7; i > -1; i--)
{
if (hold[i] < 10 && hold[i] >= 0)
{
regParams[j] = '0' + hold[i];
}
else if (hold[i] > 9 && hold[i] < 16)
{
regParams[j] = '7' + hold[i];
}
else
{
j--;
}
j++;
}
return 0;
}
*您不能設置*型'變量uint32_t'字符串。 C有「強打字」意味着你不能鬆散地將一種類型轉換爲另一種類型。您將二進制值轉換爲字符串。如果你想把它作爲一個二進制值,你必須將其轉換回來。但是你可以將'uint32_t'轉換成一個十六進制字符串,例如:'sprintf(hold,「%lX」,conversion)''雖然hold [8]不會足夠大以容納C終止符有。 –
順便說一句,沒有'base-10 unsigned int'這樣的東西。它們只是二進制位。十進制,二進制,十六進制和八進制之間的區別僅僅是人們對它們如何以字符串格式表示的決定(除了BCD表示法,它不用於高級語言)。 –