将整数值转换为 ASCII 字符
Converting integer value to ASCII char
我正在尝试使用整数值作为其对应的 ASCII 字符:
char c = char(65); //65 equivalent to A character
MessageBox::Show(System::Convert::ToString(c), "Conversion",
MessageBoxButtons::OK, MessageBoxIcon::Error);
这种方法只是在消息框中显示“65”而不是字符A。有没有办法在C++/CLI中显示字符而不是数字?我已经尝试了多种其他方法,但它们似乎都不起作用。
这是一个 C++ 和 .Net 类型与您期望的不匹配的问题。
在 .Net 中,有一个独特的字符类型:System::Char
,如果您有 using namespace System;
,则只有 Char
。 (注意大写 "C",这很重要。)这是不同于 System::UInt16
或 System::Int16
的类型,尽管它们的大小相同。
在C++中,char
和unsigned char
是最小的类型。单字节字符与单字节整数之间没有区别。
将 C++ 类型映射到 .Net 类型时,char
映射到 System::Byte
,这是一种数字类型。这就是为什么您在转换中得到一个包含单词“65”的字符串。
如果您想要 .Net 识别为字符而非数字的内容,那么您需要转换为 Char
(大写 "C" 使其成为 System::Char
) .然后你可以调用 .ToString()
得到 "A" 而不是“65”。
我的测试程序:
int main(array<String^>^ args)
{
char native = (char)65;
Debug::WriteLine(native.ToString());
Char c = (Char)65;
Debug::WriteLine(c.ToString());
return 0;
}
结果:
65
A
我正在尝试使用整数值作为其对应的 ASCII 字符:
char c = char(65); //65 equivalent to A character
MessageBox::Show(System::Convert::ToString(c), "Conversion",
MessageBoxButtons::OK, MessageBoxIcon::Error);
这种方法只是在消息框中显示“65”而不是字符A。有没有办法在C++/CLI中显示字符而不是数字?我已经尝试了多种其他方法,但它们似乎都不起作用。
这是一个 C++ 和 .Net 类型与您期望的不匹配的问题。
在 .Net 中,有一个独特的字符类型:System::Char
,如果您有 using namespace System;
,则只有 Char
。 (注意大写 "C",这很重要。)这是不同于 System::UInt16
或 System::Int16
的类型,尽管它们的大小相同。
在C++中,char
和unsigned char
是最小的类型。单字节字符与单字节整数之间没有区别。
将 C++ 类型映射到 .Net 类型时,char
映射到 System::Byte
,这是一种数字类型。这就是为什么您在转换中得到一个包含单词“65”的字符串。
如果您想要 .Net 识别为字符而非数字的内容,那么您需要转换为 Char
(大写 "C" 使其成为 System::Char
) .然后你可以调用 .ToString()
得到 "A" 而不是“65”。
我的测试程序:
int main(array<String^>^ args)
{
char native = (char)65;
Debug::WriteLine(native.ToString());
Char c = (Char)65;
Debug::WriteLine(c.ToString());
return 0;
}
结果:
65 A