有关char与byte数组的相互转化问题

luyao391 2010-04-21 03:03:10
char c = 'a';
byte[] buf = new byte[2];
buf[0] = (byte) (c >> 8);
buf[1] = (byte) c;


System.err.println((char)(((buf[0] & 0xff) << 8) | (buf[1] & 0xff)));


使用上述转化时,对于c是字符a时或者是97时,输出的结果都是字符a

有什么办法可以使原来的字符是什么,输出的字符仍然是什么,
也就是说如果c是97 输出的结果就是97而不是a,
如果c是‘b’,输出的结果就是b
...全文
338 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zfq642773391 2010-04-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zfq642773391 的回复:]
引用楼主 luyao391 的回复:
char c = 'a';
byte[] buf = new byte[2];
buf[0] = (byte) (c >> 8);
buf[1] = (byte) c;


System.err.println((char)(((buf[0] &amp; 0xff) << 8) | (buf[1] &amp; 0xff)));
……
[/Quote]
System.err.println((char)(((buf[0] & 0xff) << 8) | (buf[1] & 0xff)));
输出的是字符,因为你把它转为char了
System.err.println((((buf[0] & 0xff) << 8) | (buf[1] & 0xff)));

你不把他转为char他不就输出的是数字了嘛
zfq642773391 2010-04-21
  • 打赏
  • 举报
回复
[Quote=引用楼主 luyao391 的回复:]
char c = 'a';
byte[] buf = new byte[2];
buf[0] = (byte) (c >> 8);
buf[1] = (byte) c;


System.err.println((char)(((buf[0] & 0xff) << 8) | (buf[1] & 0xff)));


使用上述转化时,对于c是字符a时或者是97……
[/Quote]
System.err.println((char)(((buf[0] & 0xff) << 8) | (buf[1] & 0xff)));

输出的是字符,因为你把它转为char了
System.err.println((char)(((buf[0] & 0xff) << 8) | (buf[1] & 0xff)));

你不把他转为char他不就输出的是数字了嘛
WYhack 2010-04-21
  • 打赏
  • 举报
回复
没看懂1
卡卡西CC 2010-04-21
  • 打赏
  • 举报
回复
关注。。。
beiouwolf 2010-04-21
  • 打赏
  • 举报
回复
你没处理符号,char是不带符号的

public static byte[] charToByte(char ch){
int temp=(int)ch;
byte[] b=new byte[2];
for (int i=b.length-1;i>-1;i--){
b[i] = new Integer(temp&0xff).byteValue(); //将最高位保存在最低位
temp = temp >> 8; //向右移8位
}
return b;
}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧