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

标签 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 = "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/

相关文章:

python - 用第二个数组的两个值替换数组的数据

Javascript Replace() 在 iPhone 上对于长字符串表现不佳

c - 使用 malloc 创建一个包含来自 c 中另一个字符串的元素的字符串

javascript - 如何使用父数组和嵌套数组进行 _.flatten ? (洛达什)

java - Spring-Boot REST 服务基本 http auth 排除一个端点

Java变量在没有分配的情况下发生变化

java - G1 垃圾收集器是否默认启用了字符串去重功能?

PHP 按 id 对 stdClass 对象数组进行排序

c# - 使用 C# 绘制具有透明背景的字符串?

java - 如何在同一行实例化对象并调用 setter?