【问题标题】:How do I replicate this specific pack example in crystal?如何在水晶中复制这个特定的包示例?
【发布时间】:2017-11-30 16:30:55
【问题描述】:

Ruby代码示例:

"\u0000\u0000\u0000\u0002".unpack('N')[0]  #=> 2 

如何使用crystal 语言做到这一点?

【问题讨论】:

  • 在 Crystal GitHub 上查看 this issue
  • 我认为问题不是“如何在水晶中使用 unpack”,而是“如何在水晶中复制这个 特定 包示例”,这不是重复的.也许这个问题可以更笼统地表达。

标签: crystal-lang


【解决方案1】:

您可以使用IO#read_bytes 方法从许多地方读取整数。例如

io = IO::Memory.new("\u0000\u0000\u0000\u0002")
io.read_bytes(UInt32, format: IO::ByteFormat::NetworkEndian) # => 2

我建议不要使用字符串来存储二进制数据,直接从 IO 读取,或者使用 Bytes 类型存储更习惯于 Crystal。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多