问题标签 [scodec]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
269 浏览

scala - Shapeless: Inversion of filterNot on an HList

I'm trying to write a combinator for the scodec library that converts a Codec[K] in to a Codec[L] where K is an HList and L is the equivalent HList with all Unit elements removed.

Implementing decoding can be done by decoding a K and then filtering out all Unit elements. Filtering out Unit elements is directly supported by shapeless using filterNot, which makes this trivial to implement.

Implementing encoding is accomplished by converting an L to a K, inserting () at the appropriate indices, and then delegating to the original Codec[K]. I'm having trouble implementing the L => K conversion though.

I've tried a few different solutions without luck. Is this possible with shapeless?

0 投票
1 回答
275 浏览

scala - scodec 忽略 hlist 和 case 类之间的编解码器转换中的最后一个值

我刚开始使用 typelevel 的“scodec”库:https ://github.com/scodec/scodec

我发现我一直在使用以下功能:

如果我有一个不想使用规范的每个值的案例类,这很有用:

如果我想忽略的值不是 hlist 中的最后一个值,这很有效。有谁知道如何更改编解码器,如果我希望我的案例类是:

case class Example(value1: Int, value2: Int) // 忽略 value3

任何帮助表示赞赏 - 谢谢!

0 投票
1 回答
615 浏览

scala - scodec 解码/编码分割长度字段

我正在使用 scodec:https ://github.com/scodec/scodec来解码/编码二进制协议。

我正在努力处理规范的一部分,其中“长度”字段被“moreflag”分成两部分。moreflag 指示长度字段是否需要更多空间。

我的问题是我想将这两个长度字段编码/解码为单个案例类字段:

我尝试了一些不同的东西,但到目前为止没有任何结果:

我在正确的轨道上吗?谢谢!

0 投票
1 回答
539 浏览

scala - Scodec - Coproducts 找不到参数 auto 的隐式值:scodec.codecs.CoproductBuilderAuto

关于版本:

我正在尝试使用 coproduct 功能,如测试用例中所示,演示将编解码器固定为已知子类型

我不断收到错误消息:“找不到参数 auto 的隐式值:scodec.codecs.CoproductBuilderAuto[my.class.here]”

我什至复制粘贴了这个例子,但无法让它工作:

我将继续对此进行调查,但想知道最近是否有解决此问题的问题。我克隆了 repo,它可以从克隆中工作——但当我使用发布版本时却不行。

0 投票
1 回答
134 浏览

scala - .hlist 编解码器上的 .dropUnit 似乎不起作用

对于“大”编解码器,当直接从HLists 创建编解码器并应用.dropUnits

创建编解码器似乎要快得多~,然后.hlist像这样应用:

但这似乎行不通。

我发现的最简单的解决方案对我来说已经足够好了,就是省略Unit内联值。

对于有许多忽略的编解码器,此功能将非常受欢迎。我究竟做错了什么?我完全错过了重点.hlist吗?

0 投票
1 回答
426 浏览

scodec - 使用带有 scodec 的嵌套案例类

当用 scodec 定义我的消息时,我想使用嵌套的案例类。例如:

但是,在尝试编译时,我得到以下信息:

有没有办法做到这一点?(在我的真实代码中,有时嵌套案例类出现在包含类的参数列表的开头,有时在中间,有时在末尾)。

0 投票
2 回答
1065 浏览

c - 在 Scala 中映射 C 结构

在 Scala 中读写 C 风格的字节结构的最佳方法是什么,如下所示:

Python 中有 unpack 函数,可以将字符串解释为打包的二进制数据。但我在 Scala 中找不到任何类似物。

Scala中这种映射的标准方式是什么?一个一个地读取字节是很不充分的。我需要解析的协议来自 1980 年代,包含不同的字段(short、int、float),因此逐字节读取它是非常不充分的。

0 投票
1 回答
680 浏览

scodec - Scodec:如何为可选字节创建编解码器

我必须为具有以下规范的消息创建一个编解码器消息长度由一个字节表示,该字节的最低有效位是一个扩展标志,设置时表示必须将以下(可选)字节用作最高有效字节字节。(希望它有意义)它可以描述如下:

p>

随后的数据长度由该字段确定。我想将编解码器与预定义的编解码器和组合器一起使用。我想这将涉及使用 flatZip,但我不清楚如何将 flatZip 合并到 HList 组合器中。任何指向示例或文档的指针将不胜感激。

0 投票
1 回答
569 浏览

scala - Scodec:Coproducts 找不到参数 auto 的隐式值:scodec.codecs.CoproductBuilderAuto

我正在尝试定义用于与 EELink GPS 通信的 Scodec 副产品编解码器。

这是代码:

我得到以下信息:

我查看了Scodec - Coproducts 找不到参数 auto: scodec.codecs.CoproductBuilderAuto 的隐含值,但它没有帮助,从我看到的我正确定义了编解码器和鉴别器。

我在 Scala 2.11.5 上运行 scodec-core 1.7.0 和 scodec-bits 1.0.5

0 投票
1 回答
364 浏览

scala - 为递归数据结构定义“编解码器”

我有一个看起来像这样的课程,

定义一个Codec[Foo],我试过这个,

但这不起作用,因为 scodec 抛出StackOverflowError. 这样做的正确方法是什么?