用JAVA读C的数据,只能按字节来读,如果数据中有超过127的值,超出了JAVA中Byte的最大值了,怎么处理?

cql0007 2004-10-14 11:47:17
用JAVA读C的数,我是用inputStream的read(byte[])这个方法来读,将数据一次读到一个byte字节里来
可如果在c里面的数据中,有的数值是超过127的,例如200,这个数在JAVA中已经超出了JAVA的byte的最大值了,一读就出错.这个数据在整个以C传过来的数据中只有两个字节是这样的,有可以会超出127的,在JAVA中如何处理这个问题了,谢谢各位了!


...全文
602 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
naxin 2004-10-14
  • 打赏
  • 举报
回复
启发一下.

import java.io.*;
import java.lang.*;

public class Area {

public Area() {
}

public static void main(String args[]) throws Exception {
InputStreamReader inputstreamreader = new InputStreamReader(System.in);
BufferedReader bufferedreader = new BufferedReader(inputstreamreader);
System.out.print("Enter the radius: ");
String s = bufferedreader.readLine();
Double double1 = new Double(s);
double d = double1.doubleValue();
System.out.println("The area of a circle of radius " + d);
double d1 = Math.PI * d * d;
System.out.println(" is " + d1);
}
}
treeroot 2004-10-14
  • 打赏
  • 举报
回复
最上面的应该是256
这个补码反码把我搞糊涂了
treeroot 2004-10-14
  • 打赏
  • 举报
回复
可以这样
if(b[i]<0)
byte= (b[i]&0x7f)|0x80;
else
byte=b[i];
goingon99 2004-10-14
  • 打赏
  • 举报
回复
java中的byte是没有数值大小的概念的,它是原始的字节码,它可以存储任何形式的8位二进制数。
只有象int,float这样的类型才有数据表示范围的限制。如byte的值可以为10000000,如果你把它转为int,则int值表示-128,取第一位为符号位,补码表示。
treeroot 2004-10-14
  • 打赏
  • 举报
回复
int byte;
for(int i=0;i<b.length;i++)
{
if(b[i]<0)
byte=255+b[i];
else
byte=b[i];
}
cql0007 2004-10-14
  • 打赏
  • 举报
回复
我是指那个字节的值,它最大可以是FF了,就是255的值了,这样,我读到byte[]中就会出错了。

用int是没问题了,可InputStream中只有几个read方法,就一个read(byte[] b)这个方法可以一下将数据读到byte数组中,用int还没想好具体怎么处理它
treeroot 2004-10-14
  • 打赏
  • 举报
回复
获取数据的时候用int不就好了
bluesmile979 2004-10-14
  • 打赏
  • 举报
回复
字节怎么可能是200呢?开玩笑吧
cql0007 2004-10-14
  • 打赏
  • 举报
回复
已经明白了,开始思路想错了,先试试

62,614

社区成员

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

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