当前位置: 首页 > 知识库问答 >
问题:

如何将简单的Java字符串转换为打包十进制格式的EBCDIC

锺离嘉茂
2023-03-14

据我所知,我们需要先将ASCII转换为EBCDIC Cp1047或其他格式,然后应用“打包十进制”逻辑/代码。(可能我错了)

转换后的格式应类似“C3 C5 40 F0 C9 F8”(即EBCDIC压缩十进制格式)

共有1个答案

慕云
2023-03-14

打包十进制(Cobol中的Comp3)

  • +123存储为x'123c'
  • -123存储为x'123D'
  • 无符号123是x'123f'

您有Cobol抄写本吗???,如果有,请参见JRecord问题。JRecord还具有

    null
  • COBOL2J
  • LegStar
  • 各种商业产品

注意:我是JRecord的作者

将一个数字转换为打包的十进制非常容易,有许多方法可以做到这一点

一个选择是

  1. 将数字转换为字符串
  2. 将符号字符添加到字符串末尾
  3. 将字符串转换为字节(十六进制字符串)

将整数转换为打包小数的Java代码

    String val = Integer.toString(Math.abs(value));
    if (value < 0) {
        val = val.substring(1) + "D"
    } else {
        val += "C";
    }

    byte[] bytes = (new BigInteger(val, BASE_16)).toByteArray();

如何将未打包的小数转换回COMP-3?

 类似资料:
  • 问题内容: 我编写了一个简单的程序,用于在Java中向串行端口发送和接收数据。我通过回送测试(Rx到Tx)连接串行端口设备。它工作正常。但我无法发送和接收十六进制数据到串行端口和接收串行端口。在我的设备中使用了FT232BL芯片,因此是否需要任何dll或其他库来将十六进制数据发送和接收到串行端口设备。我的代码如下。 问题答案: 十六进制: 十六进制为:

  • 问题内容: 我有以下示例(链接到ideone)。 它引发异常: 但是为什么不让我直接将该数字转换为字符串呢?我可以将数字转换为整数,而不是转换为double。但是还有其他方法吗? 问题答案: 该值是无效的long值。您可以先解析double值:

  • 问题内容: 我想将二进制字符串转换为数字Eg 这怎么可能?谢谢 问题答案: 该函数将字符串转换为数字,并使用第二个参数来指定字符串表示形式的基数: 看到它在行动 。

  • 问题内容: 我需要将二进制字符串转换为十六进制字符串,但是我有问题。我通过这种方法将二进制字符串转换为十六进制字符串: 没关系!但是我丢失了字符串左侧的零。例如: 该方法返回此:123456789ABCDEF,但我想返回此: 00000123456789ABCDEF 问题答案: 而不是我将使用解析值,然后以所需的宽度(在您的示例中为21)输出值:

  • 问题内容: 我也想将我的二进制(在字符串中)转换为十六进制字符串,这只是一个程序片段,因为该程序只是另一个更大程序的一部分: 问题是我不知道填充是否有效,但是我确定该程序返回了二进制字符串的错误十六进制转换,我正在尝试这样做: http://www.wikihow.com/Convert-Binary-to- Hexadecimal PS:我需要实现它(不使用任何内置函数) 问题答案: 如果您不必

  • 问题内容: 新来的! 情况:我正在一个需要与AS / 400服务器通信的项目中。我的任务是基本上处理将发送到AS / 400服务器的请求。为此,所有用户输入都应以EDCDIC字节为单位。 问题: 我已经设法通过以下代码将打包的小数转换为String,该代码可在该论坛上找到: 我现在的问题是我必须再次将这些字符串值转换为EBCDIC字节,以便AS / 400服务器可以理解它。我打算做一些事情,例如使