java如何将十六进制0xFF5100A5转换为无符号int值,貌似java不支持无符号数据

tfling2012 2011-08-08 12:10:59
java如何将十六进制0xFF5100A5转换为无符号int值,貌似java不支持无符号数据
java怎么存储无符号值???
...全文
568 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
lliiqiang 2011-08-11
  • 打赏
  • 举报
回复
使用long
小绵羊 2011-08-11
  • 打赏
  • 举报
回复
有阿宝在咱就不献丑了
WuBill 2011-08-11
  • 打赏
  • 举报
回复
进来学习一下
magong 2011-08-11
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 tfling2012 的回复:]

谢谢大家的解答
我之前是想用java把0xFF5100A5写到文件里面,结果发现写完后用16进制打开发现不对。
后来我把它换成用字节写,就能得到正确的了。如下:希望哪位能给个详细的解释
byte h1 = (byte) 0xA5;
byte h2 = (byte) 0x00;
byte h3 = (byte) 0x51;
byte h4 = (byte) 0xFF;
[/Quote]
应该可以直接写的。贴代码看看。
qybao 2011-08-10
  • 打赏
  • 举报
回复
写文件用 write(byte[])方法写,读看你用什么流了,如果是DataInputStream的话,可以readInt,其他的可以read(byte[4])的方式,或者一个byte一个byte读
阳明 to life 2011-08-10
  • 打赏
  • 举报
回复
用字符串写的?那他把你的每一个字符再解释成二进制怎么可能还是你原来的值
转成byte本身就是二进制而不是你原来的"0" "x" "F"....等等单个字符
tfling2012 2011-08-10
  • 打赏
  • 举报
回复
谢谢大家的解答
我之前是想用java把0xFF5100A5写到文件里面,结果发现写完后用16进制打开发现不对。
后来我把它换成用字节写,就能得到正确的了。如下:希望哪位能给个详细的解释
byte h1 = (byte) 0xA5;
byte h2 = (byte) 0x00;
byte h3 = (byte) 0x51;
byte h4 = (byte) 0xFF;
ctwoz 2011-08-09
  • 打赏
  • 举报
回复
学习了…
安卓机器人 2011-08-08
  • 打赏
  • 举报
回复
额,完全看不懂2楼的解释,我不得不承认我的C学的很差,求大神解释啊
飞跃颠峰 2011-08-08
  • 打赏
  • 举报
回复
无符号整数超过了Java的int类型的表达范围,用long是正解
如楼上所说进行移位转储为long型
qybao 2011-08-08
  • 打赏
  • 举报
回复
如果你想把值表现出来,可以通过long和位移运算来处理
hava a try
int a = 0xFF5100A5;
long b = 0;
for (int i=28; i>=0; i-=4) {
b = b<<4 | (a>>>i & 0xF);
}
System.out.println(b);
System.out.printf("%X\n", b);
qybao 2011-08-08
  • 打赏
  • 举报
回复
你需要做什么处理。
无符号和有符号只是表现上是正数还是负数的问题而已,内存存储是一样的。
smallPOato 2011-08-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 qybao 的回复:]
如果你想把值表现出来,可以通过long和位移运算来处理
hava a try

Java code

int a = 0xFF5100A5;
long b = 0;
for (int i=28; i>=0; i-=4) {
b = b<<4 | (a>>>i & 0xF);
}
System.out.println(b);
System.out.printf(……
[/Quote]学习一下~
softroad 2011-08-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 qybao 的回复:]

如果你想把值表现出来,可以通过long和位移运算来处理
hava a try
Java code
int a = 0xFF5100A5;
long b = 0;
for (int i=28; i>=0; i-=4) {
b = b<<4 | (a>>>i & 0xF);
}
System.out.println(b);
System.out.printf("%X\n", b……
[/Quote]
学习了。
magong 2011-08-08
  • 打赏
  • 举报
回复
楼上都是正解。
反正要用long数据类型,这里是另一种写法:
		int a = 0xFF5100A5;
long b = 0x00000000FFFFFFFFL & a;
System.out.printf("%016X", b);

用屏蔽位的

62,614

社区成员

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

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