public class binaryTest { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
char[] a = { 'a' };
StringBuilder sb = new StringBuilder();
for( char c : a )
{
String cBinaryString = Integer.toBinaryString( (int)c );
sb.append( cBinaryString );
}
System.out.println( sb.toString() );
System.out.println( sb.toString().length() );
}}请问这里为什么输出1100001(7位)呢?
为什么不是01100001呢?我想要cBinaryString中存储01100001要怎么做到呢?
还有一个疑惑。Java中每个字符不是用2 bytes表示的吗?为什么这里只有一个byte呢?
谢谢大家了
如果参数为负,那么无符号整数值为参数加上 232;否则等于该参数。将该值转换为十六进制(基数 16)的无前导 0 的 ASCII 数字字符串。如果无符号数的大小值为零,则用一个零字符 '0' (’\u0030’) 表示它;否则,无符号数大小的表示形式中的第一个字符将不是零字符。用以下字符作为十六进制数字: 0123456789abcdef
这些字符的范围是从 '\u0030' 到 '\u0039' 和从 '\u0061' 到 '\u0066'。如果希望得到大写字母,可以在结果上调用 String.toUpperCase() 方法:
Integer.toHexString(n).toUpperCase()
} public static void main(String[] args) { System.out.println(toUnicodeBits('a'));
System.out.println(toUnicodeBits("abc"));
} public static String toUnicodeBits(final char c) {
char[] bits = new char[ Character.SIZE ];
copyUnicodeBits(bits, c, 0);
return new String(bits);
} public static String toUnicodeBits(final String str) {
char[] chs = str.toCharArray();
char[] bits = new char[ (Character.SIZE + 1) * chs.length - 1 ];
for ( int i = 0, p = 0; i < chs.length; i++, p += Character.SIZE ) {
if ( i > 0 ) {
bits[p++] = ' ';
}
copyUnicodeBits(bits, chs[i], p);
}
return new String(bits);
} private static void copyUnicodeBits(char[] chs, final char c, int offset) {
for ( int i = offset + Character.SIZE - 1, k = 0; i >= offset; i-- ) {
chs[i] = (char)('0' + ((c >>> k++) & 1));
}
}
}