奇怪,为什么 string 用 byte <<= 1 后,再 byte >>= 1,再 new String(b),得到的字符串为什么不是原来的 string ,怎么样才能得回原来的 string?
public static void main(String[] args) {
String str = "hello,world.";
byte[] b = str.getBytes();
String bstr1 = new String(b);
for (int i = 0; i < b.length; i++) {
b[i] <<= 1;
}
String bstr2 = new String(b);
for (int i = 0; i < b.length; i++) {
b[i] >>= 1;
}
String bstr3 = new String(b);
System.out.println("The result:\n"
+ "1=" + bstr1 +"\n"
+ "2=" + bstr2 +"\n"
+ "3=" + bstr3 +"\n"
);
}以下是运行结果:The result:
1=hello,world.
2=惺刎轝钷湄萛
3=桢祆?黠蜢?--------------------上面是要每一个 byte[i] 先向左移一位,得出一个字符串,然后再将每一个 byte[i] 向右移一位,(这里是想还原)不是这样还原移位的字符串的吗???????
public static void main(String[] args) {
String str = "hello,world.";
byte[] b = str.getBytes();
String bstr1 = new String(b);
for (int i = 0; i < b.length; i++) {
b[i] <<= 1;
}
String bstr2 = new String(b);
for (int i = 0; i < b.length; i++) {
b[i] >>= 1;
}
String bstr3 = new String(b);
System.out.println("The result:\n"
+ "1=" + bstr1 +"\n"
+ "2=" + bstr2 +"\n"
+ "3=" + bstr3 +"\n"
);
}以下是运行结果:The result:
1=hello,world.
2=惺刎轝钷湄萛
3=桢祆?黠蜢?--------------------上面是要每一个 byte[i] 先向左移一位,得出一个字符串,然后再将每一个 byte[i] 向右移一位,(这里是想还原)不是这样还原移位的字符串的吗???????
解决方案 »
- 发个恒生电子的坑爹笔试题,我猜90%的人会答错,不信你试试
- 这JAVA JDBC对象是什么意思
- eclipse 对于比较大的程序的时候 有时候利用他自带的修改的时候 有时候没有反应 是不是这样?
- 请问我的笔记本是酷睿双核的,下载了几个J2SE的平台都不能用,有哪位高手能帮忙解决吗?
- 建立中文文件建名出現亂碼?
- 用了OSCache,压力测试20个用户同时做一个操作就出现500错误,怎么解决?
- 如果将2130706433 与127.0.0.1两者进行互换
- 怎么获取Map集合中元素的hashCode?
- 请大家帮我看看这道java题
- 如何让在一个已经运行的jvm中运行另外的class.
- 100分的问题:如何取当前桌面路径?(针对不同操作系统的)。分不够再加
- 高手帮忙,如何读取一个文件夹下的所有的文件名并输出到文件文件或者EXCEL文件?
说个例子,或许楼主就明白了假设 a=00110111,则b=a>>1=00011011
那么 c=b<<1=00110110a和c相等么??
-------------------------------------------------------------不都是这样的,要看这个数的符号位是正还是负
太复杂的我也解释的不太明白,所以就没举太复杂的例子
涉及到补码,楼主要想彻底弄明白就仔细研究研究书上的移位操作吧
建议hellwindy(夜神·月) 也仔细研究研究书上的移位操作吧~~~~