web-dev-qa-db-fra.com

android int à la conversion hexadécimale

Je dois convertir un int en une valeur hexadécimale. C'est par exemple la valeur int:

int_value = -13516;

Pour convertir en une valeur hexadécimale je fais:

hex_value = Integer.toHexString(int_value);

La valeur que je devrais obtenir est: -34CC (Je ne sais pas si je devrais le rendre positif). 

Le problème, c’est que lors de la conversion, la valeur que j’obtiens est: ffff cb34

Puis-je utiliser cette fonction pour effectuer cette conversion?

14
masmic

La documentation indique que Integer.toHexString renvoie la représentation hexadécimale de int sous forme de valeur non signée.

Je crois que Integer.toString(value, 16) accomplira ce que vous voulez.

23
arnefm
public static int convert(int n) {
  return Integer.valueOf(String.valueOf(n), 16);
}
 // in onstart:
 Log.v("TAG", convert(20) + "");  // 32
 Log.v("TAG", convert(54) + "");  // 84

De: Java Convertit un entier en un entier hex

3
VM4
String.format("#%06X", (0xFFFFFF & colorYellow));

Sortie: #FFC107

3
Pablo Cegarra

Integer.toHexString, ainsi que String.format ("% x") ne prennent pas en charge les signes. Pour résoudre le problème, vous pouvez utiliser une expression ternaire:

    int int_value = -13516;
    String hex_value = int_value < 0
                       ? "-" + Integer.toHexString(-int_value)
                       : Integer.toHexString(int_value);
2
Kurt Huwig

Passez par le code suivant pour la conversion de nombre entier en hexa et de hex en entier

public class MainActivity extends Activity {

int number;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    number = 678668;
    Log.i("ACT", "Integer Number  " + number);

    /**
     * Code for convert integer number to hex number. two mwthods.
     */
    Log.i("ACT", String.format("#%x", number)); // use lower case x for
                                                // lowercase hex
    Log.i("ACT", "#" + Integer.toHexString(number));

    /**
     * Code for convert hex number to integer number
     */
    String hex = Integer.toHexString(number).replace("/^#/", "");
    int intValue = Integer.parseInt(hex, 16);

    Log.i("ACT", "Integer Number  " + intValue);
   }

}
1
mdDroid

Je ne pense pas que les réponses ci-dessus vous donneraient la valeur exacte des bits signés. Par exemple, la valeur de 11 est 0B mais la valeur de -11 serait F5 et non -B puisque le complément à 2 entre dans le jeu pour résoudre ce problème, j’ai modifié la réponse ci-dessus. 

int int_value = -11;
 String hex_value = int_value < 0
                           ? Integer.toHexString(int_value+65536) :    Integer.toHexString(int_value);
 String shortHexString = hex_value.substring(2); 

où, 65536 est 2 ^ 16 maintenant, vous pouvez obtenir les résultats escomptés. Bonne codage :)

  • Élément de liste
1
Abhilash