如何在Java中为char添加整数?

时间:2012-11-29 16:33:09

标签: java char encryption

我正在使用Java编写密码,但我不能做以下事情: 我想编辑一个char数组的值来加密它

我该怎么做?

我不知道改变每个字符的ASCII值可能是答案;那就是我问你们的原因!

5 个答案:

答案 0 :(得分:8)

您可以向int添加char,但结果为int - 您必须转回char才能将其重新加入array[x] += someInt; 数组,除非您使用复合赋值运算符:

array[x] = (char) (array[x] + someInt);

String.getBytes(charset)

但是,通常此不是执行加密的适当方式。您通常会得到不可打印的字符,或者甚至在Unicode中没有特定含义的字符。相反,大多数加密算法都设计用于处理任意二进制数据 - 即字节数组。

通常您首先将字符串转换为字节数组(例如,使用new String(encryptedBytes) - 明确指定编码)。然后对字节数组执行加密,为您提供一个新的字节数组。如果确实需要将其转换回文本,请使用base64执行此操作 - 使用{{1}},因为您不再需要编码的文本数据普通文本编码。

答案 1 :(得分:2)

在Java中,charint是兼容的类型,因此只需将它们与+运算符一起添加。

char c = 'c';
int x = 10;

c + x会生成一个整数,因此您需要显式投射将其分配给您的角色可变回。

c = (char)(c + x); // After this assignment, c = 'm'

答案 2 :(得分:0)

简单的对称旋转密码使用相同的函数进行编码以及在使用26个字母的字母表时对数据进行解码。

public class Rot13 { 
    public static void main(String[] args) {
        String s = args[0];
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if       (c >= 'a' && c <= 'm') c += 13;
            else if  (c >= 'A' && c <= 'M') c += 13;
            else if  (c >= 'n' && c <= 'z') c -= 13;
            else if  (c >= 'N' && c <= 'Z') c -= 13;
            System.out.print(c);
        }
        System.out.println();
    }
}

来源here

在上面的示例中,不需要转换为char,因为“add and assign”运算符将结果存储在初始容器(char c)中,这是一个char。 / p>

答案 3 :(得分:0)

将带有char和typecast的int value添加回char,如下所示:

  char a = 'a';
  char b = (char)(a+5);
  System.out.println(b);  //<-prints "f"

在char数组中,

     charArray[index] = (char)(charArray[index] + intValue);

答案 4 :(得分:0)

public class IntPos {
    static int   dim = 4;
    public static String[][] main(){
        
      String[][] p = new String[dim][dim];  
      char letter = 'A';
      
      
      for(int i = 0; i < dim;i++){
         for(int j = 0; j<dim;j++){
             
            char newLetter =(char)(letter + i);
            p[i][j] = Character.toString(newLetter)+j;
            
            System.out.println(p[i][j]);
             
             
         } 
      }
      
        
      return p;  
    }
    
      
     
}