问题标签 [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 回答
104 浏览

scala - 如何在 scala/sbt 中安装 scodec 库?

我的开发人员要求我在 linux 服务器上安装 scodec 库,但我迷路了,因为我找不到任何有关安装 scodec 库的文档!

0 投票
1 回答
37 浏览

scala - 无法证明 Long :: String :: Option[Long] :: Option[java.util.UUID] :: shapeless.HNil 可以与 SimpleMp4BoxHeader 相互转换

我是一名初学者,正在处理 MP4 文件解码。当我编写如下代码时,它报告“无法证明 Long :: String :: Option[Long] :: Option[java.util.UUID] :: shapeless.HNil可以转换为/从 SimpleMp4BoxHeader"。我该如何解决这个问题?

0 投票
1 回答
48 浏览

scala - Scodec - 读取固定长度的字符串

我正在编写一个文件解析器,它正在读取包含固定长度、0 填充字符串的现有文件格式。

因此,例如,我需要解析的文件中有两个用于二进制结构的案例类。第一个包括一个可以是两个值之一的 4 个字符的字符串,后者包括一个 8 个字符的字符串(其中长度小于 8 个字符的值被 NUL 填充)

我试图编写一个简单的编解码器来解析第一个:

但是,我发现它无法成功地将其转换为 WadHeader (大概是因为魔法值与案例类定义不完全匹配。我希望能够摄取固定大小的字符串字节并将其解码为 String 对象。

不幸的是,浏览文档只会发现“贪婪”字符串或大小前缀字符串选项。

0 投票
0 回答
49 浏览

scala - shapeless.~?>.witness[Nothing, Nothing, T](shapeless.~?>.rel[Nothing, Nothing]) 将scala版本从2升级到3

我正在将我的 scala 项目从版本 2 升级到 3。

这是我的 build.sbt 版本 scala 版本 2

以下是示例 scala 代码 -

这适用于 scala 版本 2。

现在我将 scala 版本升级到 3。

下面是 build.sbt -

下面是代码 scala 版本 3 -

当我编译这个程序时,我得到以下错误 -

[错误] -- 错误:/Users/rajkumar.natarajan/Documents/Coding/OS/scala3-maven-build-demo/src/main/scala/com/serialize/AkkaEventSerializer.scala:17:36 [错误] 17 | 案例 e:事件 => Codec.encode(e).require.toByteArray [错误] | ^ [错误] |找不到 scodec.Codec[com.serialize.AkkaEventSerializer.Event] 类型的惰性隐式值。[错误] |我发现:[错误] | [错误] | shapeless.~?>.witness[Nothing, Nothing, T](shapeless.~?>.rel[Nothing, Nothing]) [错误] |

[错误] |但是特征 NatTRel0 中的方法见证与 shapeless.Lazy[scodec.Codec[com.serialize.AkkaEventSerializer.Event]] 类型不匹配。[错误] -- 错误:/Users/rajkumar.natarajan/Documents/Coding/OS/scala3-maven-build-demo/src/main/scala/com/serialize/AkkaEventSerializer.scala:22:38 [错误] 22 | case EventManifest => Codec[Event].decode(BitVector.apply(bytes)).require.value [error] | ^ [错误] |找不到 scodec.Codec[com.serialize.AkkaEventSerializer.Event] 类型的惰性隐式值。[错误] |我发现:

[错误] |

[错误] | shapeless.~?>.witness[Nothing, Nothing, T](shapeless.~?>.rel[Nothing, Nothing]) [错误] |

[错误] |但是特征 NatTRel0 中的方法见证与 shapeless.Lazy[scodec.Codec[com.serialize.AkkaEventSerializer.Event]] 类型不匹配。[error] 发现两个错误 [error] 发现两个错误 [error] (Compile / compileIncremental) 编译失败

我知道我们可以使用 scala 3 版本编译 scala 2.13 代码。但我不能为这段代码。

我该如何解决这个错误?

0 投票
1 回答
51 浏览

scala - scodec - 方法太大

具有密封特征 DataTag 及其子类型(86 个案例类)。将项目升级到 scala 2.12、scodec-core 1.11.8 和 scodec-bits 1.1.27 后,编译失败并显示

[error] Method too large: protocol/Payload/BasePacket$.tagCodec ()Lscodec/Codec;

此方法调用错误:

implicit def tagCodec: Codec[DataTag] = Codec.coproduct[DataTag].auto

是否有另一种方法可以生成具有大量子类型的编解码器?

我尝试使用“基于密钥的鉴别器”示例(https://github.com/scodec/scodec/blob/series/1.11.x/unitTests/src/test/scala/scodec/examples/CoproductsExample.scala),但是结果是一样的。

PS:我在github上发了一个issue(https://github.com/scodec/scodec/issues/324),但是还没人回答。