5.整数に文字列

件名の説明:
文字列を整数に変換する(Integer.valueOf返す0(文字列)の機能を達成するが、文字列はデジタルの要件を満たしていない)、ライブラリ関数を使用することができない要求は、整数、文字列を変換します。0または文字列の値が0の有効な値ではありませんが返されます。
説明を入力します。
nullにすることができ、英数字記号を含む文字列を入力します。
出力説明:
それはデジタル値の正当な表現が返されている場合は、それ以外の場合は0
例1
エントリー
コピー
+2147483647
    1a33
輸出
コピー
2147483647
    0
アイデア:文字列は質問の意味に沿って整数に変換することができた場合は、確かにそれは「0」文字の文字列がある-との間で「9」、記号+または-文字列の場合、確かに最初の発生が存在する場合文字列の途中でどこかに存在する場合の位置要素は、文字列をデジタルに変換することはできません
そこである:RES =(RES << 1)+(RES << 3)+(STR [I]&0xFの)。
この文の解釈:(RES << 1)+(RES << 3)、左のいずれかが2で乗算され、左3を8で乗算され、一緒に等価RES * 10。
(STR [I]&0xFのは)strのと等価である[I] - '0'、なぜですか?文字コード値のSacII「0」のため、低い4ビット - 「9」〜9 0であり、15は0xFの1111ビットであり、この操作は、...、0に「0」とすることができます「9」は「9」に変換されます。
全体的にこの文:RES = RES * 10 + STR [I] - '0'。 例えば、文字列が「123」です。
次いで、単一のステップ:RES = 1; RES = 1 * 10 + 2 = 12; RES = 12 * 10 + 3 = 12。この文は、それが何を意味するのかです。

 

 

おすすめ

転載: www.cnblogs.com/manmanchanglu/p/12577746.html