5. La cadena en un entero

Descripción Asunto:
(Integer.valueOf lograr rendimientos función 0 (cadena), pero la cadena no cumple con los requisitos de la digital) la conversión de una cadena en un entero, la solicitud no puede utilizar la función de biblioteca convierte la cadena de número entero. No se se devuelve un valor válido de 0 valor de 0 o una cadena de caracteres.
Introduzca una descripción:
Introduzca una cadena que incluye símbolos alfanuméricos, puede ser nulo
Descripción Salida:
Si se devuelve una expresión legítima del valor digital, de lo contrario 0
Ejemplo 1
entrada
copia
+2147483647
    1a33
exportación
copia
2147483647
    0
Idea: Si la cadena se puede convertir en un entero de acuerdo con el significado de las preguntas, entonces, ciertamente, es una cadena de caracteres '0' - entre el '9', el símbolo + o - si la hay, entonces, ciertamente, la primera aparición de la cadena un elemento de posición, si hay algún lugar en medio de la cadena, la cadena no se puede convertir a digital .
Entonces hay: res = (res << 1) + (res << 3) + (str [i] y 0xf);
Esta interpretación frase: (res << 1) + (res << 3), el de la izquierda se multiplica por 2, la izquierda tres son multiplicado por 8, res juntos equivalente * 10;
(Str [i] y 0xf) es equivalente a str [i] - '0', ¿por qué? Debido a los bajos cuatro bits del código de caracteres SacII valor '0' - '9' es 0 ~ 9, el numeral 15 es 0xF, 1111 trozos, a continuación, esta operación puede ser '0' en 0, ..., el '9' se convierte en '9'.
En general, esta frase: res = res * 10 + str [i] - '0'. Por ejemplo, la cadena es '123';
Entonces el único paso: res = 1; res = 1 * 10 + 2 = 12; res = 12 * 10 + 3 = 12. Esta frase es lo que significa.

 

 

Supongo que te gusta

Origin www.cnblogs.com/manmanchanglu/p/12577746.html
Recomendado
Clasificación