char a[3];
int x=9;
int y=8;
a[0]=(char)x;
a[1]=(char)y;
a[2]='\0';
unsigned char * temp=(unsigned char*)a;
但是当我显示这个温度时,它会显示?8。应显示98。
任何人都可以帮忙吗???
答案 0 :(得分:4)
事件更好,假设您正在使用C ++,请尝试使用stringstream。然后,您可以按照以下步骤进行操作
std::stringstream stream;
stream << x << y;
答案 1 :(得分:4)
char a[3];
int x='9';
int y='8';
a[0]=(char)x;
a[1]=(char)y;
a[2]='\0';
unsigned char * temp=(unsigned char*)a;
printf("%s", temp);
您给出的值为9和8,而不是ASCII值。
答案 2 :(得分:1)
或者,更通用的
template <class T> string toString (const T& obj)
{
stringstream ss;
ss << obj;
return ss.str();
}
答案 3 :(得分:1)
像nico的解决方案就是你应该使用的东西(如果你有提升,也可以参见boost :: lexical_cast),但是如果想直接回答你的问题(如果你想了解更低级别的事情,例如), string [9,8,\ 0]不是“98”。
“98”实际上是ASCII中的[57,56,0]或[0x39,0x38,0x0]。如果你想手动连接从0到9的十进制数,你必须向它们添加'0'(0x30)。如果您想处理超出该范围的数字,您将需要做更多工作来提取每个数字。总的来说,您应该使用类似toString函数模板nico posted或boost :: lexical_cast的更完整版本。
答案 4 :(得分:0)
有两种方法:
itoa()
当然第二种方法仅适用于单个数字,所以在一般情况下你宁愿使用itoa()
。
答案 5 :(得分:0)
a[0] = (char)x;
a[1] = (char)y;
应该是
a[0] = x + '0';
a[1] = y + '0';
(如果你想禁用警告,请保留演员表)/