比方說,我有以下字符串:將字符串轉換爲二進制[的Java]
String s = "Hello, stackoverflow"
我將如何轉換是成二進制數(0和1)?這裏有個訣竅:我不允許使用內置方法進行轉換。它必須以數學方式完成。我不知道從哪裏開始。任何人都可以將我指向正確的方向嗎?
編輯1:我看到這個question和人們建議使用getBytes(字符串),字符集UTF-8和Integer.toBinaryString。我不允許使用任何這些方法進行轉換。我還沒有聽說過36基地。
比方說,我有以下字符串:將字符串轉換爲二進制[的Java]
String s = "Hello, stackoverflow"
我將如何轉換是成二進制數(0和1)?這裏有個訣竅:我不允許使用內置方法進行轉換。它必須以數學方式完成。我不知道從哪裏開始。任何人都可以將我指向正確的方向嗎?
編輯1:我看到這個question和人們建議使用getBytes(字符串),字符集UTF-8和Integer.toBinaryString。我不允許使用任何這些方法進行轉換。我還沒有聽說過36基地。
首先使用getByte()
函數獲取字節表單字符串,然後使用Integer.toBinaryString(byte)
函數。 &多數民衆贊成它。
注:〜確保Integer.toBinaryString(byte)
接受一個int(或在這種情況下字節不是全部。)所以你必須按字節通過字節(可能是循環。)
編輯:〜 你可以做的是解析字符串字符char char爲每個字符你可以使用ascii值。
int tempChar = (int)ch;
然後簡單地使用它。
Integer.toString(tempChar,2);
試試這個。
string finalString = "";
for(int i = 0;i<myStr.length;i++){
int tempChar = (int)ch;
finalString = finalString + Integer.toString(tempChar,2);//& this is not allowed then now only you need to create function for integer to binary conversion.
}
System.out.println("Your byte String is"+finalString);
你可以嘗試這樣的: -
String s = "Hello, stackoverflow"
byte[] bytes = str.getBytes(s);
可以在Java
檢查getBytes() method使用指定的字符集將此String編碼字節序列, 存儲導致一個新的字節數組。
當該字符串不能在給定字符集的 中編碼時,此方法的行爲未指定。當需要對編碼過程進行更多控制時,應使用CharsetEncoder類 。
如果你想爲每個字節的位:
for(int i=0; i<array.length;i++){
System.out.println(Integer.toBinaryString(0x100 + array[i]).substring(1));
}
這似乎有點不公平,因爲我們不能使用:
byte[] b = s.getBytes();
這是最短的解決您的問題,但由於你不應該使用,這是一個壞方法:
String s = "Hello, stackoverflow";
StringBuilder buf = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
int charcterASCII = s.charAt(i);
// Automatic type casting as 'char' is a type of 'int'
buf.append(Integer.toBinaryString(characterASCII);
// or:
// buf.append(characterASCII, 2);
// or - custom method:
// buf.append(toBinary(characterASCII));
}
System.out.println("answer : " + buf.toString());
如果你決定使用toBinary(int)
方法,那就是:
public static final String toBinary (int num) {
char[] buf = new char[32];
int charPos = 32;
do {
buf[--charPos] = i & 1;
i >>>= 1;
} while (i != 0);
return new String(buf);
}
或者,如果連這是不允許的,你最好把自己的解決方案。 :-)
dublicate http://stackoverflow.com/questions/917163/convert-a-string-like-testing123-to-binary-in-java – iMBMT
沒有內置方法,甚至沒有'byte [] b = s.getBytes();'? – Astrobleme
no getByes,charset UTF-8或toBinaryString – user3479783