byte[] 数组 转换为 16进制数

goldater 2010-11-15 01:24:15
byte a = [99, -45, -21, -38, -22, 84, -107, 56, 63, -75, 31, 107, 104, -64, 15, -124]


这里面都是什么类型的数? 怎样转换为16进制的数?
...全文
237 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ctr54188 2010-11-15
  • 打赏
  • 举报
回复
来学习。。。。。
ruirui09171208 2010-11-15
  • 打赏
  • 举报
回复
byte 存的是 8位2进制数,有符号的
char为16位的无符号(采用unicode编码)
但是jvm本身 存取是 int类型的 一般是32(机器不同 位数不同)
byte应该是 jvm通过某些机制 截取的 8位二进制数(应该是吧)

这里涉及到符号扩展

char扩展为 无符号扩招byte通过 Integer.toHexString()的时候 会先转 int

然后 调用
Integer.toHexString()

这时候 byte 会进行符号扩展

比如 (byte)0x95 就会 转化为 int的 0xFFFFFF95

要想转化为int但是 只保留byte位的话 只需要与上一个0xff

PS:可以详细的去看 java解惑

这个很重要

我现在做的是底层 数据交互,就是二进制码的传说 用byte[] 存取

刚开始 做校验的时候,经常发生混合运算 造成数据错误

后来 恶补了 这方面 知识 现在总算明白了些
asd1985223 2010-11-15
  • 打赏
  • 举报
回复
99的16进制啊 63..
clariones 2010-11-15
  • 打赏
  • 举报
回复
计算机里的数字,都是二进制的,也就是16进制的,还可以说8进制的,4进制的,32进制的,256进制的
具体到byte,我觉得可以说是256进制的,呵呵。

其实多少进制,多少进制,只有在显示的时候才需要处理,运算的时候,都是2进制的
小裴同学 2010-11-15
  • 打赏
  • 举报
回复
数组用for循环取值就在转进制
十进制转成十六进制:

Integer.toHexString(int i)
在输出,里面都是int 型
goldater 2010-11-15
  • 打赏
  • 举报
回复
数组 byte[] a = [99, -45, -21, -38, -22, 84, -107, 56, 63, -75, 31, 107, 104, -64, 15, -124]

我想知道 ,byte里面的99等什么类型的数?
小裴同学 2010-11-15
  • 打赏
  • 举报
回复
这是数组么,还是字符、、、
十进制转成十六进制:

Integer.toHexString(int i)

62,615

社区成员

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

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