将扩展的ascii字符转换为java中的代码

时间:2017-10-03 07:54:59

标签: java arrays string

我无法将扩展的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作为输出。

任何人都可以帮我找到正确的代码。

1 个答案:

答案 0 :(得分:2)

严格来说,没有&#34;扩展ASCII&#34; - 或者对这个非标准术语有几种不同的口语定义。 ASCII码从0到127.完全停止。

Java类型char的值范围为0到65535,它们是Unicode字符集的基本多语言平面中的代码点

您的编码算法使用16位减法。 &#34;负&#34;值将在32768到65535范围内(因为char值是无符号的)。但是,您似乎只想处理0到255范围内的值。为此,您可以强制算术模256 - 例如通过将结果与0xFF进行AND运算。