在我的yaml文件中,我有:

foo:
  - '0777'

当我在代码中加载文件时(result = YAML.load_file(...))会得到
result[:foo] = [511]

这发生在ubuntu上。在Mac上是正确的(["0777"])。更改为:
foo:
  - "'0777'"

它在ubuntu上工作,但字符串包含引号:'0777'
为什么?

最佳答案

在ruby forInteger中,如果参数是字符串,并且恰好以0x0b0开头,则它分别解释为十六进制、二进制和八进制字符串。
因此这里0777被当作一个八进制字符串。由于'0777' octal = '511' decimal,因此您将得到511
reference

关于ruby - 为什么YAML将“0777”解释为511?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33168329/

10-10 22:40