我无法将扩展 ASCII 字符(代码大于 128)转换为其代码。
我正在使用 (int)'�' 进行转换,但它给出了
�-- 65533
我正在使用以下java函数:
static String decodeCandidateId2(String CandidateId ){
byte[] valueDecoded= Base64.decodeBase64(CandidateId.getBytes());
CandidateId=new String(valueDecoded);
String key="@!#&%$#@&^%$";
String output="";
for(int i=0; i<CandidateId.length(); i++) {
int ascii=0;
ascii=(int)CandidateId.charAt(i)-((int)key.charAt((i-1) % key.length()));
output += Character.toString ((char) ascii);
}
return output;
}
如果 CandidateId = "VXJaWl9lVlV0XpRbZHVZWFpeXVuAV5NVW3BRW19XVQ==" 当前输出 = 12979@2248゚6@5854998ᄑ1゚07008921,但我需要获得 12979@224866@5854998@1507008921 作为输出。
谁能帮我获取正确的代码。
最佳答案
严格来说,不存在“扩展 ASCII”这样的东西 - 或者这个非标准术语有几种不同的口语定义。 ASCII 代码是从 0 到 127。句号。
Java 类型 char
的值范围为 0 到 65535,它们是 Unicode 字符集基本多语言平面中的代码点。
您的编码算法使用 16 位减法。 “负”值的范围是 32768 到 65535(因为 char
值是无符号的)。但是,您似乎只想处理 0 到 255 范围内的值。为此,您可以强制算术以 256 为模 - 例如将结果与 0xFF 进行“与”运算。
关于java - 将扩展ascii字符转换为java中的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46539734/