将整型,有符号整型转换为java中的EBCDIC



如何在发送到主机时将无符号整数转换为EBCDIC格式,假设要将4550编码为EBCDIC格式,下面是我正在尝试的代码片段,根据EBCDIC图表编号没有等效符号要编码,我总是得到空白结果

String s = “4550”;
String e = new String(s.getBytes(),“Cp037");

谁能帮我把它编码成EBCDIC的步骤

大型机期望它是编码格式,当它们消费请求时,数字字段应该是不可读的格式,下面是示例

C ¤,G   ÚM        P1234   N

字段是字母数字它是可读的格式和少数字段是数字它是用符号编码的,我正在寻找一种方法来实现相同的

我在网上找到了一些解决方案,将整数转换为打包的十进制格式,但它没有像预期的那样工作。

您需要非常清楚大型机端需要什么是纯文本还是二进制格式(例如Cobol Comp, Comp -3)。

需要转换成EBCDIC吗?如果只是文本。只需将其创建为普通文本,然后让Mainframe Transfer软件将其转换为EBCDIC即可。

Java字符串是16位(即小int) unicode。EBCDIC是一种8位字符编码,它最好表示为字节数组或流。将java字符串转换为EBCDIC:

byte[] ebcdicData = "0123".getBytes("cp037");

我找到了编码方式的解决方案,下面是代码片段

int val = Integer.parseInt(input);
if (val >= 0 && val <= 0xffff) {
hex = String.format("%04x", val);
} else {
hex = String.format("%08x", val);
}
String[] split = hex.split("(?<=\G.{" + 2 + "})");
String result = "";
for (String sp : split) {
byte b1[] = {(byte) Integer.parseInt(sp, 16)};
result += new String(b1, "Cp037");
}

相关内容

  • 没有找到相关文章

最新更新