輸入一個字符串,將其轉換成數字時,需要考慮哪些情況(如字符串是否合法、是否為空、int 的范圍、是否為 16 進制等)?
將字符串轉換成數字時,需全面考慮多種邊界情況和合法性問題,具體如下:
-
字符串基礎狀態:首先需判斷字符串是否為空(長度為0)或僅包含空白字符(如空格、制表符),這類情況無法轉換為有效數字。例如,字符串""或" "均屬于無效輸入。
-
符號處理:字符串可能包含正負號(+或-),需確認符號的位置是否合法——符號只能出現在字符串開頭,且最多出現一次。若符號后無數字(如"+"、"-abc"),則為無效。
-
數字合法性與基數:字符串需符合目標數字的基數規則。
- 十進制:默認基數,由0-9組成,不可包含字母(除特殊基數標識外)。
- 十六進制:通常以"0x"或"0X"開頭,后續字符為0-9、a-f、A-F(如"0x1a3")。
- 八進制:部分場景下以"0"開頭,后續為0-7(如"0123")。
若包含非對應基數的字符(如十進制中出現"12a3"),則轉換失敗。
-
數值范圍限制:需檢查轉換后的數值是否在目標類型(如int)的范圍內。以32位int為例,范圍為-2147483648至2147483647,超出此范圍會導致溢出(如"2147483648"轉換為int時溢出)。