Visual studio 2010 将字符转换为ASCII码&;反之亦然,在C+中+/CLI

Visual studio 2010 将字符转换为ASCII码&;反之亦然,在C+中+/CLI,visual-studio-2010,character-encoding,c++-cli,type-conversion,ascii,Visual Studio 2010,Character Encoding,C++ Cli,Type Conversion,Ascii,我目前正在学习c++/cli,我想将字符转换为ASCII码十进制,反之亦然(示例“a”=65) 在JAVA中,这可以通过简单的类型转换来实现: char ascci = 'A'; char retrieveASCII =' '; int decimalValue; decimalValue = (int)ascci; retrieveASCII = (char)decimalValue; 显然,此方法在c++/cli中不起作用,以下是我的代码: String

我目前正在学习c++/cli,我想将字符转换为ASCII码十进制,反之亦然(示例“a”=65)

在JAVA中,这可以通过简单的类型转换来实现:

   char ascci = 'A';
   char retrieveASCII =' ';
   int decimalValue;
   decimalValue = (int)ascci;
   retrieveASCII = (char)decimalValue;
显然,此方法在c++/cli中不起作用,以下是我的代码:

   String^ words = "ABCDEFG";
   String^ getChars;
   String^ retrieveASCII;
   int decimalValue;

   getChars  =  words->Substring(0, 1);
   decimalValue = Int32:: Parse(getChars);
   retrieveASCII = decimalValue.ToString();
我得到这个错误:

mscorlib.dll中发生类型为“System.ArgumentOutOfRangeException”的第一次意外异常

其他信息:输入字符串的格式不正确


您知道如何解决此问题吗?

属性中的字符位于
系统::字符串类型中。因此,它们是Unicode字符。根据设计,Unicode字符集包含所有ASCII字符。因此,如果字符串只有这些字符,则可以转换为ASCII编码,而不会丢失任何字符。否则,您必须有一个省略或替换字符或抛出异常的策略

ASCII字符集当前使用一种编码。它以每个字节表示其所有字符

// using ::System::Text;

const auto asciiBytes = Encoding::ASCII->GetBytes(words->Substring(0,1));
const auto decimalValue = asciiBytes[0];   // the length is 1 as explained above

const auto retrieveASCII = Encoding::ASCII->GetString(asciiBytes);
当然,十进制是数字的一种表示形式。除了在解释中,我看不出你在哪里使用十进制。如果您确实想在代码中使用它,它可能是这样的:

const auto explanation = "The encoding (in decimal) " 
                       + "for the first character in ASCII is " 
                       + decimalValue; 
注意
auto
的使用。我省略了变量的类型,因为编译器可以找出它们。它允许代码更加关注概念而不是样板文件。另外,我使用了
const
,因为我认为“变量”的值不应该改变。这两项都不是必需的


顺便说一句,所有这些也适用于Java。如果您的Java代码正常工作,那只是巧合。如果它写得正确,就很容易翻译成.NET。Java的
String
Charset
类的功能与.NET
String
编码
类非常相似。(不过,它们都使用Unicode字符集和UTF-16编码来表示字符串。

比您想象的更像Java

String^ words = "ABCDEFG";
Char first = words [0];
String^ retrieveASCII;
int decimalValue = ( int)first;
retrieveASCII = decimalValue.ToString();

请解释您想要得到的结果。我需要找到给定字符的ASCII码,我从文本框中获取字符,我需要将它们转换为ASCII码,然后在labelBox上显示;int n=(int)ascii这种类型的转换在C++/CLI中不起作用。谢谢你,汤姆,这正是我想要的!