我需要將16位整數寫入文件。 fstream只能寫入字符。因此,我需要將整數轉換爲char - 實際整數,而不是表示整數的字符(即,0應該是0x00時,不的0x30)我嘗試以下:將16位整數轉換爲char數組? (C++)
char * chararray = (char*)(&the_int);
然而這產生一個向後陣列兩個字符。單個字符不會翻轉,但字符的順序是。因此我創建了這個功能:
char * inttochar(uint16_t input)
{
int input_size = sizeof(input);
char * chararray = (char*)(&input);
char * output;
output[0]='\0';
for (int i=0; i<input_size; i++)
{
output[i]=chararray[input_size-(i+1)];
}
return output;
}
這看起來很慢。當然,有一種更高效,不太冒險的方式來轉換它?
你可以簡單地做'˚F<< i'其中'F'是你的'ofstream'和'i'是你的整數。如果你想要十六進制,你可以做'f <<「0x」<< std :: hex << i'。 –
我需要將其轉換爲實際整數,而不是表示整數的字符。該方法會將整數轉換爲表示整數的字符。 – Nick
因爲它太無關緊要,而成爲無題的投票。 –