inputstream 中 unsigned integer 转成 java中的基本类型

wswhp 2009-07-14 01:25:13
java中只有 int型 而没有 unsign integer 和 signed之分。

我现在遇到个问题,一个文件转变成 inputstream后
原来的 8bit 16 bit,32bit unsigned integer 和 signed integer
应该如何转成 java中的基本数据类型?

现在别人告诉我下面的规则,但是我不会转,请大家帮忙
java 类型
8bit unsigned integer ---> short
8bit signed integer ---> byte
16bit unsigned integer ---> int
16bit signed integer ---> short
32bit unsigned integer ---> long
32bit signed integer ---> int

另外inputstream中的字节如何转成 float

感谢大家帮忙
...全文
155 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
冰思雨 2009-07-15
  • 打赏
  • 举报
回复
java.io.DataInputStream
ZangXT 2009-07-15
  • 打赏
  • 举报
回复
你可以直接用java.io.DataInputStream读你的文件,这样方法都是现成的。

或者用jni转一下
union {
int i;
float f;
} u;
wswhp 2009-07-15
  • 打赏
  • 举报
回复
字节流 怎么转成float啊
reeves101 2009-07-14
  • 打赏
  • 举报
回复
Mark
紫炎圣骑 2009-07-14
  • 打赏
  • 举报
回复
楼上正解。
顶一下。
ZangXT 2009-07-14
  • 打赏
  • 举报
回复
其实就是增加位数。
比如8位无符号整数可以表示0~255,11111111表示255,而到java中,如果用byte表示的话,这个值就成为-127了,所以我们可以使用short来表示,
0000 0000 1111 1111。

你可以参考java.io.DataInputStream这个类的设计。
比如public final int readUnsignedByte()
这个方法,读一个字节的无符号整数,结果使用一个int来表示。
读取无符号short的方式也类似,
public final int readUnsignedShort()

只要结果类型(这里是int)能够包含无符号数表示的范围即可。

处理的时候注意大小尾问题。
bolink5 2009-07-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ZangXT 的回复:]
其实就是增加位数。
比如8位无符号整数可以表示0~255,11111111表示255,而到java中,如果用byte表示的话,这个值就成为-127了,所以我们可以使用short来表示,
0000 0000 1111 1111。

你可以参考java.io.DataInputStream这个类的设计。
比如public final int readUnsignedByte()
这个方法,读一个字节的无符号整数,结果使用一个int来表示。
读取无符号short的方式也类似,
public final int readUnsignedShort…
[/Quote]

说的很好

62,615

社区成员

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

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