【问题标题】:C# Convert Int64 to String using a castC# 使用强制转换将 Int64 转换为字符串
【发布时间】:2014-02-16 03:28:10
【问题描述】:

如何将整数转换为字符串?它的工作方式相反,但不是这样。

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

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

如果我这样做

string message3 = (string)message2;

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

【问题讨论】:

    标签: c# string casting int long-integer


    【解决方案1】:

    message[0] 将字符串中的第一个字母作为char,因此您将char 转换为long,而不是将string 转换为long

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

    【讨论】:

      【解决方案2】:

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

      您希望如何以 long 形式存储由非数字数字组成的字符串?如果您想将数字视为字节数组,您可能对BitConverter 感兴趣。

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

      ((char)value).ToString()
      

      【讨论】:

        【解决方案3】:

        另一种替代方法是使用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"
        

        【讨论】:

          【解决方案4】:

          试试这个方法:

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

          【讨论】:

            【解决方案5】:

            字符串没有整数表示,只有字符表示。因此,正如其他人所说,104 不是“hello”(字符串)的值,而是“h”(字符)的值(参见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];
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2014-02-27
              • 1970-01-01
              • 1970-01-01
              • 2016-11-07
              • 1970-01-01
              • 2011-01-02
              • 1970-01-01
              相关资源
              最近更新 更多