我有這個簡單的以下程序:package mainimport ( "fmt" yaml "gopkg.in/yaml.v2")type Test struct { SomeStringWithQuotes string `yaml:"someStringWithQuotes"` SomeString string `yaml:"someString"` SomeHexValue string `yaml:"someHexValue"`}func main() { t := Test{ SomeStringWithQuotes: "\"Hello World\"", SomeString: "Hello World", SomeHexValue: "0xDef9C64256DeE61ebf5B212238df11C7E532e3B7", } yamlBytes, _ := yaml.Marshal(t) fmt.Print(string(yamlBytes))}這將打印以下內容,并明顯表明 Go 決定何時引用字符串:someStringWithQuotes: '"Hello World"'someString: Hello WorldsomeHexValue: 0xDef9C64256DeE61ebf5B212238df11C7E532e3B7但是,當我嘗試使用以下 Python 腳本讀取此 YAML 時:import yamlyaml_str = """someStringWithQuotes: '"Hello World"'someString: Hello WorldsomeHexValue: 0xDef9C64256DeE61ebf5B212238df11C7E532e3B7"""print(yaml.load(yaml_str))它將十六進制值解析為整數(shù)。如果我現(xiàn)在使用以下代碼序列化回 YAML:import yamlimport sysyaml_str = """someStringWithQuotes: '"Hello World"'someString: Hello WorldsomeHexValue: 0xDef9C64256DeE61ebf5B212238df11C7E532e3B7"""print(yaml.dump(yaml.load(yaml_str)))我得到:someHexValue: 1272966107484048169783147972546098614451903325111someString: Hello WorldsomeStringWithQuotes: '"Hello World"'我怎樣才能最好地確保保留十六進制格式?不幸的是,我個人對 Go 端的代碼沒有任何影響(但對于嘗試做類似事情的其他人來說,Go 端解決方案仍然受歡迎)。
2 回答

慕田峪4524236
TA貢獻1875條經驗 獲得超5個贊
Go 將該十六進制字符串解釋為一個數(shù)字。
someHexValue: 0xDef9C64256DeE61ebf5B212238df11C7E532e3B7
如果那是它生成的 yaml,那么 python 將其視為數(shù)字是正確的。
在 python 中對此的創(chuàng)可貼是使用以下命令將其轉換回十六進制
hex(1272966107484048169783147972546098614451903325111)
這是將該十六進制視為數(shù)字的yaml 規(guī)范
添加回答
舉報
0/150
提交
取消