我正在尝试打破一个int值并将其保存为数组,我尝试使用此方法,它工作正常,除非第一个数字为零时,它将其保存为1而不是0.如何解决此问题?
int k2CombinedEnc = in.nextInt();
int[] k2Enc = Integer.toString(k2CombinedEnc).chars().map(c -> c-='0').toArray();
for(int element: k2Enc) {
System.out.println("encrypted ciphertext is" + element);
}
示例输出:
0010101010
encrypted ciphertext is1
encrypted ciphertext is0
encrypted ciphertext is1
encrypted ciphertext is0
encrypted ciphertext is1
encrypted ciphertext is0
encrypted ciphertext is1
encrypted ciphertext is0
答案 0 :(得分:3)
您正在以整数形式读取值。所有前导零都被剥离,因为010
只是10
。
改为以字符串形式阅读,你应该没问题。
String k2CombinedEnc = in.nextLine();
int[] k2Enc = k2CombinedEnc.chars().map(c -> c-='0').toArray();
for(int element: k2Enc) {
System.out.println("encrypted ciphertext is" + element);
}
注意:考虑使用Character.digit
方法而不是减去零:
int[] k2Enc = k2CombinedEnc.chars().map(c -> Character.digit(c, 10)).toArray();
答案 1 :(得分:0)
您也可以直接处理加密的密码字符串的字节。
String k2CombinedEnc = in.nextLine();
byte[] encodedBytes = k2CombinedEnc.getBytes(StandardCharsets.US_ASCII)
System.out.println("encrypted ciphertext is: ");
int i = 0;
for(byte element : encodedBytes) {
System.out.println(" byte " + i++ + ": " + Integer.toHexString(element));
}