1
votes

(JAVA) convertir décimal en décimal codé binaire?

Par exemple, je voudrais convertir la valeur int 12 en une sortie String de BCD: 00 12 (0x00 0x12). Si j'ai une valeur int de 256 , ce sera 02 56 (qui est 0x02 0x56), ou si j'ai une valeur int de 999 , ce sera 09 99 (0x09 0x99), 9999 serait 99 99 (0x99 0x99).

Pour le moment, ma seule solution est de créer un tableau String de taille 4 et de calculer le nombre de caractères y en convertissant la valeur int en String. S'il y a 2 caractères, je vais d'abord ajouter 2 x 0 dans le tableau avant d'ajouter les 2 caractères, puis les reconstituer en une seule variable String.

Fondamentalement,

int value = 12;
String output = Integer.toString(value); 
// then count the number of characters in the String.
// 4 minus (whatever number of characters in the String, add zeros
// add the characters:
stringArray[0] = "0";
stringArray[1] = "0";
stringArray[2] = "1";
stringArray[3] = "2";
// then, concatenate them back

S'il y a 3 caractères, j'ajouterai d'abord un 0 dans le tableau avant d'ajouter 3 caractères. Je me demandais s'il y avait un autre moyen?


3 commentaires

Juste pour clarifier, que vous souhaitez créer un tableau de chaînes, chacune contenant une chaîne à un seul caractère?


@Martin Hmm, j'ai une valeur int et je veux les convertir en décimal codé binaire (?) Comme une valeur int de 48 deviendra une valeur String de "00 48" (0x00 0x48), et une valeur int de 128 deviendra Valeur de chaîne de "01 28" (0x01 0x28).


Il s'agit d'une conversion binaire en BCD. Aucune entrée décimale que ce soit.


3 Réponses :


0
votes

Est-ce ce que vous demandez?

formatTheString(Integer.toString(256),4);

et transmettez les valeurs telles que

public static String formatTheString(String string, int length) {
    return String.format("%"+length+"s", string).replace(' ', '0');
}


1 commentaires

Merci beaucoup!!



0
votes

Vous pouvez utiliser String.format pour ajouter le début de 0 et utiliser une sous-chaîne pour diviser en deux parties.

System.out.println(
        String.join(
                " ",
                Arrays.asList(
                        output.split("(?<=\\G.{2})")
                )
        )
);

String.format ("% 04d", valeur) ajoutera 0 s à l'avant si la longueur est inférieure à 4.

Si vous ne le souhaitez pas pour utiliser la sous-chaîne, vous pouvez utiliser String.split et String.join comme ci-dessous.

int value = 12;
String output = String.format("%04d",value);
System.out.println(output.substring(0,2)+" "+output.substring(2,4));

output.split ("(? divisera la chaîne en 2 caractères chacun.


0 commentaires

-1
votes

Je pense que ce que vous demandez n'est pas correct. reportez-vous ceci pour BCD.

et le code ci-dessous est suffisant pour ce dont vous avez besoin

System.out.printf ("% 04d", n);

dans le code n ci-dessus est votre numéro.


1 commentaires

Cela ne donne pas de BCD.