我需要将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
因为它太无关紧要,而成为无题的投票。 –