【问题标题】:Adding int values to char array ASCII value C# & JAVA将 int 值添加到 char 数组 ASCII 值 C# & JAVA
【发布时间】:2023-03-25 04:38:01
【问题描述】:

在 Java 中,您可以轻松地将 int 值添加到 char 数组中,而无需像这样定义它

String name = " maisam is my name ";
        char[] arr = name.toCharArray();

        for (int i = 0; i < arr.length; i++) {

            arr[i] += 100;

        }

但是在 c# 中你需要在添加值时提及 (char)

string name = " maisam is my name ";
        char[] arr = name.ToCharArray();

        for (int i = 0; i < arr.Length; i++) {

            arr[i] += (char) 100;
        }

我在 Java 中尝试了两种方法,都运行良好,没有错误,但在 c# 中却给了我一个错误,这是为什么呢?我到处搜索没有找到任何解释!

【问题讨论】:

  • 它的语言语法
  • 你想用这段代码实现什么?
  • @Avishek 我正在创建一个基本的加密解密应用程序,我将一个字符串作为 char 数组中的输入,我将值添加到它的 ASCII 码中,现在添加的值是密钥解密时使用,我会在解密时减去那个数量
  • @Naz 这不是语法问题。如果你需要转换变量,你可以像在 C# 中那样做。
  • 没有从 Int32 到 char 的隐式转换。或根据 MSDN 对 char 的任何隐式转换:msdn.microsoft.com/en-us/library/y5b434w4%28VS.71%29.aspx

标签: java c# arrays encryption char


【解决方案1】:

这更多的是关于幕后发生的事情,而不是语法差异。您在 Java 中的转换方式与在 C# 中的转换方式相同,但您不需要在这段 Java 代码中进行转换。 在 Java 中,它会自动将 int 转换为 char 类型。 但是 C# 的工作方式不同,您必须转换值。 似乎 C# 的类型比 Java 强一些。

【讨论】:

    【解决方案2】:

    简单来说,C#中没有从intchar的隐式转换

    对于C# int,您将拥有什么,

    int -> long , float, double, or decimal
    

    查看此source 的其他可用性。

    因为你没有像这样的隐式转换

    char c = 100 ;
    

    但应该使用显式转换

    char c = (char) 100 ; 
    

    这里也是:C# char (source)

    转化次数

    一个char可以隐式转换为ushort、int、uint、long、ulong、 浮点数、双精度数或十进制数。但是,没有隐式转换 从其他类型到char类型。

    【讨论】:

      【解决方案3】:

      这应该可以。 c# 将 char 隐式转换为 int,但不会将 int 转换为 char,因此您必须在分配给 char 数组之前将添加的 int 值转换为 char..

      string name = " maisam is my name ";
      char[] arr = name.ToCharArray();
      
      for (int i = 0; i < arr.Length; i++) {
          arr[i] = (char)(arr[i] + 100);
      }
      

      编辑:代码arr[i] += (char)100; 也可以正常工作。上面的代码只是对相同代码的一个细化。

      【讨论】:

      • 这也行得通,但这看起来更困难,如果我要选择一个选项,从那个代码到这个代码,这对我有什么好处?它做同样的事情,但代码看起来很复杂
      • @ramb0 您的 c# 代码运行良好。你遇到了什么错误?
      • 没有错误,我的意思是你必须定义 arr[i] += (char) 100;在 c# 中但在 Java (char) 中不是必需的,我只是问一个简单的原因:)
      • @ramb0 好的,明白了。看看这个stackoverflow.com/a/1503478/1682415你可能会得到答案
      猜你喜欢
      • 1970-01-01
      • 2012-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-07
      相关资源
      最近更新 更多