在我的yaml文件中,我有:
foo:
- '0777'
当我在代码中加载文件时(
result = YAML.load_file(...)
)会得到result[:foo] = [511]
这发生在ubuntu上。在Mac上是正确的(
["0777"]
)。更改为:foo:
- "'0777'"
它在ubuntu上工作,但字符串包含引号:
'0777'
。为什么?
最佳答案
在ruby forInteger
中,如果参数是字符串,并且恰好以0x
、0b
、0
开头,则它分别解释为十六进制、二进制和八进制字符串。
因此这里0777
被当作一个八进制字符串。由于'0777' octal = '511' decimal
,因此您将得到511
。
reference
关于ruby - 为什么YAML将“0777”解释为511?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33168329/