我需要以byte
无符号格式打印类型变量。我怎么做?
问问题
1976 次
2 回答
3
我刚刚为你写了那个方法。
public static String printUnsignedByte(byte b){
StringBuilder sb = new StringBuilder();
while(b>0){
sb.insert(0, b%2==0?0:1);
b>>=1;
}
for(int i = 8-sb.length(); i>0; i--){
sb.insert(0,0);
}
return sb.toString();
}
编辑:但它不包括 2 的补码格式。你也需要那个吗?EDIT2:签出:
Integer.toBinaryString(2)
它涵盖了对负值的 2es 恭维,但输出太长,它 pribts 4 位。只需用子字符串缩短它就可以了。
编辑3:我的最终解决方案。
public static String printUnsignedByte(byte b){
if(b>0){
StringBuilder ret = new StringBuilder(Integer.toBinaryString(b));
for(int i = 8-ret.length(); i>0; i--){
ret.insert(0,0);
}
return ret.toString();
}else{
return Integer.toBinaryString(b).substring(24);
}
}
于 2011-03-19T17:33:53.120 回答
2
你是说你从一个有符号的 int 开始并想要绝对值吗?你可以这样做:
byte b = Byte.parseByte("-9");
int i = (int) b;
System.out.println(Math.abs(i));
于 2011-03-19T17:30:58.710 回答