Печать строки в байтах - PullRequest
5 голосов
/ 28 ноября 2011

Может кто-нибудь сказать мне, как напечатать строку в байтах, т.е. соответствующий ей код ASCII?!

Мой ввод - это обычная строка типа «9», а вывод должен соответствовать значению ASCII символа «9»

Ответы [ 4 ]

4 голосов
/ 28 ноября 2011

Если вы ищете байтовый массив - посмотрите этот вопрос: Как преобразовать строку Java в массив байтов ASCII?

Чтобы получить значение ascii для каждого персонажа, вы можете сделать:

String s = "Some string here";

for (int i=0; i<s.length();i++)
  System.out.println("ASCII value of: "+s.charAt(i) + " is:"+ (int)s.charAt(i) );
3 голосов
/ 28 ноября 2011

Использовать String.getBytes() метод.

byte []bytes="Hello".getBytes();
for(byte b:bytes)
  System.out.println(b);
2 голосов
/ 28 ноября 2011

Привет, я не уверен, что вы хотите, но может быть следующий метод поможет распечатать его.

    String str = "9";

    for (int i = 0; i < str.length(); i++) {
        System.out.println(str.charAt(i) + " ASCII " + (int) str.charAt(i));
    }

вы можете увидеть его на http://www.java -forums.org / java-советы / 5591-печать-ASCII-значения-characters.html

1 голос
/ 07 августа 2017

Наивный подход будет:

  1. Вы можете перебирать байтовый массив:

    final byte[] bytes = "FooBar".getBytes(); for (byte b : bytes) { System.out.print(b + " "); }

    Результат: 70 111 111 66 97 114

  2. или через массив символов и преобразовать символ в примитив int

    for (final char c : "FooBar".toCharArray()) { System.out.print((int) c + " "); }

    Результат: 70 111 111 66 97 114

  3. или, благодаря Java8, с forEach через inputSteam: "FooBar".chars().forEach(c -> System.out.print(c + " "));

    Результат: 70 111 111 66 97 114

  4. или, благодаря Java8 и Apache Commons Lang : final List<Byte> list = Arrays.asList(ArrayUtils.toObject("FooBar".getBytes())); list.forEach(b -> System.out.print(b + " "));

    Результат: 70 111 111 66 97 114

Лучший подход - использовать кодировку (ASCII, UTF-8, ...):

// Convert a String to byte array (byte[])
final String str = "FooBar";
final byte[] arrayUtf8 = str.getBytes("UTF-8");
for(final byte b: arrayUtf8){
  System.out.println(b + " ");
}

Результат: 70 111 111 66 97 114

final byte[] arrayUtf16 = str.getBytes("UTF-16BE");
  for(final byte b: arrayUtf16){
System.out.println(b);
}

Результат: 70 0 111 0 111 0 66 0 97 0 114

Надеюсь, это помогло.

...