J'ai une chaîne avec des données binaires dedans (1110100), je veux obtenir le texte afin que je puisse l'imprimer (1110100 imprimerait "T"). J'ai essayé cela, c'est semblable à ce que j'ai utilisé pour transformer mon texte en binaire, mais cela ne fonctionne pas du tout:
public static String toText(String info)throws UnsupportedEncodingException{ byte[] encoded = info.getBytes(); String text = new String(encoded, "UTF-8"); System.out.println("print: "+text); return text; }
8 Réponses :
Regardez le parseint code>
fonction. Vous avez peut-être aussi besoin d'une distribution et du caractère.tostring code>
fonction. P>
Vous pouvez utiliser INTEGER.PARSINTINT CODE>
avec une radix de 2 (binaire) pour convertir la chaîne binaire en un entier:
String str = new Character((char)charCode).toString();
Merci, ça fait beaucoup de sens, mais je ne comprends pas comment faire un nouveau personnage d'un int (charcode)
@Nick: Il suffit de le jeter à Char code>.
Puis-je nommer cette chose comme une représentation vectorielle du texte?
L'inverse (où "info" est le texte d'entrée et "S" la version binaire de celui-ci)
Voici la réponse.
private String[] splitByNumber(String s, int size) { return s.split("(?<=\\G.{"+size+"})"); }
Je sais que l'OP a déclaré que leur binaire était dans un format code> de chaîne de code>, mais pour un souci de complétude, je pensais ajouter une solution à convertir directement à partir d'un comme Casablanca EM> indiquait que vous avez essentiellement besoin d'obtenir la représentation numérique du caractère alphabétique. Si vous essayez de convertir quelque chose de plus long qu'un seul caractère, il viendra probablement en tant que nb Utilise UTF Cart Set em> Strort> P> Alternativement à l'aide du constructeur de chaîne: P> octet [] code > à une représentation de chaîne alphabétique.
octet [] code> et au lieu de la convertir à une chaîne puis en utilisant une boucle pour ajouter les caractères de chaque
octet code> Vous pouvez utiliser BYTEBUFFER A > et Charbuffer pour faire le levage pour vous : p>
String text = new String(bytes, 0, bytes.length, "ASCII");
C'est mon seul (bien fonctionnant sur Java 8): et la méthode compressée Impression sur la console: P> Arrays.stream(input.split("(?<=\\G.{8})")).forEach(s -> System.out.print((char) Integer.parseInt(s, 2)));
System.out.print('\n');
public static String binaryToText(String binary) { return Arrays.stream(binary.split("(?<=\\G.{8})"))/* regex to split the bits array by 8*/ .parallel() .map(eightBits -> (char)Integer.parseInt(eightBits, 2)) .collect( StringBuilder::new, StringBuilder::append, StringBuilder::append ).toString(); }
Aussi, vous pouvez également utiliser une solution alternative sans flux et expressions régulières ( basée sur la réponse de Casablanca ): Vous avez juste besoin de