我无法将扩展的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 =&#34; VXJaWl9lVlV0XpRbZHVZWFpeXVuAV5NVW3BRW19XVQ ==&#34; 电流输出= 12979 @2248゚6@ 5854998ㅍ1゚07008921,但我需要输出12979 @ 224866 @ 5854998 @ 1507008921作为输出。
任何人都可以帮我找到正确的代码。
答案 0 :(得分:2)
严格来说,没有&#34;扩展ASCII&#34; - 或者对这个非标准术语有几种不同的口语定义。 ASCII码从0到127.完全停止。
Java类型char
的值范围为0到65535,它们是Unicode字符集的基本多语言平面中的代码点。
您的编码算法使用16位减法。 &#34;负&#34;值将在32768到65535范围内(因为char
值是无符号的)。但是,您似乎只想处理0到255范围内的值。为此,您可以强制算术模256 - 例如通过将结果与0xFF进行AND运算。