我目前在解析 Go 中以 0 開頭的一些數字時遇到問題。fmt.Println(strconv.ParseInt("0491031", 0, 64))0 strconv.ParseInt:解析“0491031”:語法無效GoPlayground:https ://go.dev/play/p/TAv7IEoyI8I我認為這是由于一些基本轉換錯誤,但我不知道如何修復它。如果您需要更多詳細信息,我在使用 gocsv 解析 5GB+ csv 文件時遇到此錯誤。[此錯誤是由GoCSV 庫引起的,該庫不允許為要解析的數字指定基數。]
1 回答

忽然笑
TA貢獻1806條經驗 獲得超5個贊
如果 base 參數為 0,則真正的基數由符號后面的字符串前綴(如果存在)暗示:2 表示“0b”,8 表示“0”或“0o”,16 表示“0x”,否則為 10。此外,僅對于以 0 為基數的參數,允許使用 Go 語法為整數文字定義的下劃線字符。
您正在傳遞0
for base
,因此將從字符串值推斷要解析的基數,并且由于它以 a 開頭,'0'
后跟 non '0'
,因此您的數字被解釋為八進制 (8) 數字,并且該數字9
在那里無效。
請注意,這將起作用:
fmt.Println(strconv.ParseInt("0431031", 0, 64))
并輸出(在Go Playground上試試):
143897 <nil>
(八進制431031
等于143897
十進制。)
如果您的輸入以 10 為基數,請10
傳遞base
:
fmt.Println(strconv.ParseInt("0491031", 10, 64))
然后輸出將是(在Go Playground上嘗試):
491031 <nil>
- 1 回答
- 0 關注
- 119 瀏覽
添加回答
舉報
0/150
提交
取消