Aks*_*hay 4 java ebcdic comparator
我遇到过一个要求,我需要将字符串转换为EBCDIC编码然后对其进行排序.我们需要用EBCDIC对它进行排序,因为字符串必须进入大型机.我将排序的字符串仅包含captial和integers中的字母.
我用Google搜索了一些然后我遇到了IBM的 链接,它已按顺序列出了字符
我意识到EBCDIC排序与普通的java词典排序完全相反(至少对于我要处理的数据类型).
我的问题是我的认识对吗?如果不是我错过了什么?或者是否有任何可用于EBCDIC编码的java比较器.
你不应该花太多时间来弄清楚EBCDIC的许多特点.鉴于您的问题范围有限,实现您的要求的简单方法如下:
java.lang.String以Java的本机编码(UTF-16)生成的辅助方法java.lang.StringJava的本机编码(UTF-16)并生成EBCDIC编码的字符串这种方法的优势在于,只有两段代码需要理解EBCDIC - 转换后的那个,以及转换出来的那个.所有其他代码都可以使用Java系统库以及任何用于排序,过滤,搜索和所有其他处理的库,而无需考虑EBCDIC编码.
由于char类型在Java中隐式为UTF-16,因此需要将EBCDIC字符串作为Java字节数组进行比较.
例:
Charset encoding = Charset.forName("IBM1047");
Comparator<String> encComparator = (s1, s2) ->
encoding.encode(s1)
.compareTo(encoding.encode(s2));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1916 次 |
| 最近记录: |