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 Réponses :
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'); }
Merci beaucoup!!
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.
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.
Cela ne donne pas de BCD.
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.