代码之家  ›  专栏  ›  技术社区  ›  MaatDeamon

Marc21 Akka流二进制解码器

  •  0
  • MaatDeamon  · 技术社区  · 8 年前

    我正在尝试解码3月21日的二进制数据记录,其中包含以下关于提供记录长度的字段的规范。

    计算机生成的五个字符的数字,等于 右对齐,未使用的位置包含零。

    Akka流框架。然而,我只是不知道如何指定该字段的大小。我想象一个字符是8位,可能16位代表一个数字,我不确定,我想知道这是否取决于平台或语言。简而言之,问题是,如果知道我在Scala/Java中,是否可以说该字段的大小。

    如果收集得当,这是否意味着如何读取值?

    如果有人知道这件事,请分享。

    上下文:

    通过处理,我的意思是,将非结构化字节流分块成帧流,其中帧是记录。

    下一阶段将包括向apache Kafka发送该记录(字节)。

    显然,排放阶段将完全并行以加快过程。

    Symphony服务器无法在请求时传输转储,尤其是通过网络传输。因此,这种基于Akka流的图形处理可以执行这项工作,以便在我们的整体快速数据基础设施中对转储进行快速摄取/生产和整体流处理。

    编辑2

    请澄清一下。

    1 回复  |  直到 8 年前
        1
  •  1
  •   badcook    8 年前

    看起来你在尝试解析 MARC 21 records .

    MARC4J 然后使用它。

    如果您想将其与Akka流集成,或者即使您想以自己的方式解析MARC记录,我建议您使用 Framing.delimiter 将MARC 21记录终止符(ASCII控制字符1D)用于完整的MARC记录,而不是尝试流式处理MARC记录的片段。这会容易得多。

    “右对齐且未使用的位置包含零”是另一种说法,表示数字从左侧填充0。在本例中,此行来自一个较大的引号,其中数字字符串必须为5个字符长。这意味着,如果您试图表示数字1,则必须将其表示为 00001