2011-11-28 141 views
4

有人可以告訴我如何打印一個字符串作爲字節,即其​​相應的ASCII碼?!打印字符串作爲字節

我的輸入是一個正常的字符串,如「9」,輸出應該是字符的對應的ASCII值「9」

回答

3

使用String.getBytes()方法。

byte []bytes="Hello".getBytes(); 
for(byte b:bytes) 
    System.out.println(b); 
+1

適用於ASCII碼,但如果您遇到八位半,您將得到負數,因爲決定Java中字節的權力是經過簽名的。 – Thilo

4

如果你正在尋找一個字節數組 - 看這個問題:How to convert a Java String to an ASCII byte array?

爲了讓每一個人字符的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)); 
1

看到一個天真的做法是:

  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,通過輸入的forEachSteam: "FooBar".chars().forEach(c -> System.out.print(c + " "));

    結果:70 111 111 66 97 114

  4. ,或者由於Java8和Apache Commons Langfinal List<Byte> list = Arrays.asList(ArrayUtils.toObject("FooBar".getBytes())); list.forEach(b -> System.out.print(b + " "));

    結果:70 111 111 66 97 114

更好的方法是使用charset(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

希望它有幫助。