C#使用强制转换将Int64转换为String

时间:2014-02-16 03:28:11

标签: c# string casting int long-integer

如何将整数转换为字符串?它反过来但不是这样。

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

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

如果我这样做

string message3 = (string)message2;

我收到一条错误消息,说您无法将long转换为字符串。为什么是这样。方法.ToString()不起作用,因为它只将数字转换为字符串,因此它仍将显示为“104”。与Convert.ToString()相同。如何让它再次从104说“你好”?在C ++中,它允许您转换此类方法,但不允许在C#

中转换

5 个答案:

答案 0 :(得分:3)

message[0]将字符串中的第一个字母设为char,因此您将char投放到long,而不是string投放到long

尝试再次将其转换回char,然后连接所有字符以获取整个字符串。

答案 1 :(得分:2)

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

您希望如何在长整数中存储由非数字数字组成的字符串?如果要将数字视为字节数组,则可能对BitConverter感兴趣。

如果要将数字ASCII代码转换为字符串,请尝试

((char)value).ToString()

答案 2 :(得分: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"

答案 3 :(得分:1)

试试这个方法:

string message3 = char.ConvertFromUtf32(message2);
  • 104是“h”而不是“你好”的值。

答案 4 :(得分:1)

没有字符串的整数表示,只有char。因此,正如其他人所说,104不是“hello”(字符串)的值,而是'h'(char)的值(参见ASCII chart here)。

我无法完全想到你为什么要将字符串转换为int数组然后再转换为字符串,但是这样做的方法是运行字符串并获取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];