问个白痴问题

Nonetracer 2008-12-05 10:51:10
最近有点犯晕,一个白痴问题转不过来,望大家指点。

有一段内存码:
0000: 8C80 9830 3132 3334 3536 3738 3900 8D90
现在要把它通过网络发出去,那肯定要转换成byte[]了,如何转换?不是直接byte b = (byte)0x8C吧?我记得byte的值是-128~127
...全文
60 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Nonetracer 2008-12-05
  • 打赏
  • 举报
回复
谢谢ls各位兄台。

3楼的兄弟,我不是要字符串转换。我的意思是如何将0x8C转换为byte。

我开始想的也是直接(byte),但有个问题,比如:
int i = 0x8C; //十进制应该是140
byte b = (byte)i; //也就是-116
i = b;
我知道这是由于byte是范围是-128~127的缘故,所以b的值为-116,但这样会不会有问题?因为i = b后,i的值就会是-116了。
pepsighost 2008-12-05
  • 打赏
  • 举报
回复
同意2楼
jiaping108 2008-12-05
  • 打赏
  • 举报
回复
8C80 9830 3132 3334 3536 3738 3900 8D90
这内存值是16进制的
你这中间要有空格的话自己处理下哈

//16进制字符串转字节数组
public byte[] hexStringToByte(String hex) {
int len = (hex.length() / 2);
byte[] result = new byte[len];
char[] achar = hex.toCharArray();
for (int i = 0; i < len; i++) {
int pos = i * 2;
result[i] = (byte) (toByte(achar[pos]) << 4 | toByte(achar[pos + 1]));
}
return result;
}

//字符转字节
private byte toByte(char c) {
byte b = (byte) "0123456789ABCDEF".indexOf(c);
return b;
}
fosjos 2008-12-05
  • 打赏
  • 举报
回复
byte b = (byte)0x8C可以这样的,没问题
Nonetracer 2008-12-05
  • 打赏
  • 举报
回复
有点明白了,每一位就是一个byte
xinxian13 2008-12-05
  • 打赏
  • 举报
回复
看起来是没什么问题的啊,这样就OK啊
binary_system 2008-12-05
  • 打赏
  • 举报
回复
对呀 这样可以的

62,628

社区成员

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

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