2014-02-16 50 views
2

你如何转换为字符串整数转换的Int64为String?它可以反过来工作,但不是这样。C#使用强制

string message 
Int64 message2; 
message2 = (Int64)message[0]; 

如果消息是“hello”,则输出为104作为数字;

如果我做

string message3 = (string)message2; 

我得到一个错误,说你不能长转换为字符串。为什么是这样。方法.ToString()不起作用,因为它只将数字转换为字符串,所以它仍然会显示为“104”。与Convert.ToString()一样。我如何使它从104再次说出“你好”?在C++中,它可以让你施展这种方法而不是在C#

回答

3

message[0]给出了从字符串的第一个字母为char,所以你铸造charlong,不stringlong

尝试再次铸造回char然后串连所有字符得到整个字符串。

2

ToString()一样工作正常。您的错误是在转换为整数。

正是你怎么能指望存储在一个长期的非数字的数字组成的字符串?如果您想将数字视为字节数组,您可能对BitConverter感兴趣。

如果你想一个数字ASCII代码转换为字符串,尝试

((char)value).ToString() 
1

试试这个方法:

string message3 = char.ConvertFromUtf32(message2); 
  • 104是 “H”,而不是价值的“hello ”。
1

没有字符串的整数表示形式,只有字符。因此,如由其他人指出,104是不是“你好”(字符串),但的“H”(一个char)的值(见ASCII chart here)。

我不能完全明白你为什么会想一个字符串转换成int数组,然后回一个字符串,但这样做的方式,它是通过串运行,并获得内部 - 每个字符的值,然后将这些int值重新转换为char值并将它们连接起来。因此,像

string str = "hello" 
List<int> N = new List<int>(); 
//this creates the list of int-values 
for(int i=0;i<str.Count;i++) 
    N.Add((int)str[i]); 
//and this joins it all back into a string 
string newString = ""; 
for(int i=0;i<str.Count;i++) 
    newString += (char)N[i]; 
2

另一种替代的方法是使用ASCII.GetBytes方法如下

string msg1 ="hello"; 
byte[] ba = System.Text.Encoding.ASCII.GetBytes(msg1); 
//ba[0] = 104 
//ba[1] = 101 
//ba[2] = 108 
//ba[3] = 108 
//ba[4] = 111 

string msg2 =System.Text.Encoding.ASCII.GetString(ba); 
//msg2 = "hello"