gpt4 book ai didi

java - 将 ascii 数字数组转换为各自的字符

转载 作者:行者123 更新时间:2023-12-02 07:29:59 25 4
gpt4 key购买 nike

在这个学校小项目中,我正在做凯撒密码。要做的就是用户输入一个单词,它将被转换为字符数组,然后转换为各自的 ascii 数字。然后将对每个数字执行此等式:

new_code = (Ascii_Code + shift[用户选择的数字]) % 26

到目前为止,这是我编写的代码:

import javax.swing.*;
import java.text.*;
import java.util.*;
import java.lang.*;

public class Encrypt {


public static void main(String[] args) {

String phrase = JOptionPane.showInputDialog(null, "Enter phrase to be messed with ");
String shift = JOptionPane.showInputDialog(null, "How many spots should the characters be shifted by?");
int shiftNum = Integer.parseInt(shift); //converts the shift string into an integer
char[] charArray = phrase.toCharArray(); // array to store the characters from the string
int[] asciiArray = new int[charArray.length]; //array to store the ascii codes

//for loop that converts the charArray into an integer array
for (int count = 0; count < charArray.length; count++) {

asciiArray[count] = charArray[count];

System.out.println(asciiArray[count]);

} //end of For Loop

//loop that performs the encryption
for (int count = 0; count < asciiArray.length; count++) {

asciiArray[count] = (asciiArray[count]+ shiftNum) % 26;

} // end of for loop

//loop that converts the int array back into a character array
for (int count = 0; count < asciiArray.length; count++) {

charArray[count] = asciiArray[count]; //error is right here =(

}




}//end of main function




}// end of Encrypt class

它在最后一个 for 循环中提到了“可能的精度损失”。还有什么我应该做的吗?谢谢!

最佳答案

对于 A a; B b;,当 ((B) ((A) b)) != b 时,赋值 a = (A) b 会丢失精度。换句话说,转换为目标类型并返回会给出不同的值。例如 (float) ((int) 1.5f) != 1.5f 因此将 float 转换为 int 会丢失精度,因为 >.5 丢失。

char 是 Java 中的 16 位无符号整数,而 int 是 32 位有符号 2 补码。您无法将所有 32 位值放入 16 位中,因此编译器会警告由于隐式强制转换会丢失 16 位而造成的精度损失,该隐式强制转换只是从 中删除 16 个最低有效位intchar 中,丢失 16 个最高有效位。

考虑

int i = 0x10000;
char c = (char) i; // equivalent to c = (char) (i & 0xffff)
System.out.println(c);

您有一个只能容纳 17 位的整数,因此 c(char) 0

要修复此问题,如果您认为由于程序逻辑而不会发生这种情况,请向 char 添加显式转换:asciiArray[count] ((char) asciiArray[count]).

关于java - 将 ascii 数字数组转换为各自的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13036334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com