You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby 2.7.3生成.rxdata的Marshal字节流索引9位置0D字节作用查询

问题结论

这个0x0D字节不属于Ruby Marshal序列化规则的原生内容,是Windows平台文本模式写文件产生的额外转义字符。

具体原因

  • 你在调用File.open写入rxdata文件时使用了默认的"w"文本模式,Windows平台的文本模式下,所有待写入的字节流如果检测到0x0A(换行符LF),会自动在其前方插入0x0D(回车符CR),将单LF换行转换为Windows标准的CRLF换行格式。
  • 你观察到的索引9位置的0x0D,就是插入在原有Marshal输出的0x0A字节前的额外字符,和Marshal本身的序列化规则无关。

修复方案

将写文件的模式改为二进制写入"wb"即可避免自动转义:

file = File.open("./users.rxdata", "wb")

修改后重新生成的文件就不会出现多余的0x0D字节,你也可以直接打印Marshal.dump(A.new).bytes验证原始序列化结果中不存在该字节。

内容的提问来源于stack exchange,提问作者januw a

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 09:24:02