关于类型转换的问题 (ByteBuffer)buffer这样强制转换好想可以吧:) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你可以试试objectbuffer(有可能名字不对,记不清了) 是要实现Class buffer.getClass(long from, long offset)吗? 如果你获得的数据包本身就是MyDefineClass强制得到的BYTE数据包,那么楼上的办法是一定可行的。或者说存在类的继承关系时候,也可以,不过顺序是有要求的。 直接用你定义的类强制转换就可以了(Mybuffer)buffer.get(MyDefineClass,41); 兄弟们,好象都不行啊!我的意思是ByteBuffer buffer = ByteBuffer.allocate(41); //41为自定义的类的大小buffer.put(buff,0,41); //buff 为我得到的数据包现在我该如何将buffer还原为我定义的类啊!既MyDefineClass MyClass = new MyDefineClass();如何将buffer中的内容给MyClass谢谢楼上的兄弟们个的建议! 你是要将buffer还原成类还是对象? TO :topbit(无影雷霆) 还原成对象啊?就是将buffer 强制转换成我自定义的类的对象 就是实现如下: MyDefineClass MyClass = new MyDefineClass() MyClass = (MyDefineClass)buffer; 该如何实现啊?????? 是不是这个意思:ByteBuffer buffer = ......byte[] dat = buffer.getBytes(0, 41);ByteArrayInputStream bis = new ByteArrayInputStream(dat);ObjectInputStream ois = new ObjectInputStream(bis);MyDefineClass obj = (MyDefineClass) ois.readObject(); TO :cbhyk()ObjectInputStream ois = new ObjectInputStream(bis);这句话跳出一个异常啊!怎么回事啊!谢谢啊 错误为java.io.StreamCorruptedException: invalid stream header 这说明dat中取到的数据不是一个对象 但确实是一个结构体啊!是这样的情况:受到服务器中受到数据包,数据包是许多的结构体(用vc写的struct )!保存到ByteBuffer 中!我在取出41个byte,一个结构体的大小,结果就出现上面的问题了! Java对象和vc的struct的二进制结构是完全不一样的,不可能直接转换成Java对象,只用Java重新实现该struct。如:在vc中:struct data_struct{ long data1; char data2; ...};在Java中public class DataStruct{ int data1; byte data2; ... public DataStruct(byte[] data) { DataInputStream dis = new DataInputStream(new ByteArrayInputStream(data)); data1 = dis.readInt(); data2 = dis.readByte(); ... }} 再问cbhyk我在VC中有一个unsigned byte 来放一个0~~255的数字现在在java中有数据类型来放0~255的数呢?要求是一个字节啊!就是8位啊!不能有short int 或long TO cbhyk:byte就是8位,但它表示-127----128 啊。我要表示为0---255谢谢你的指教能把你的联系方式告诉我吧!我感觉你好厉害啊? 如果是用于表示,-127~128和0~255没什么区别,都是0x00~0xff如果用于计算和显示,把它和0xff相与就成了整数0~255 问个简单的问题 JAVA小问题 请问java中所有的抽象类都要用 implements吗? servlet的ServletContext对象何时销毁 Thinking in java 正则表达式问题????? jTextField的文字怎么不停的转换,直到按钮开始,停止,再按又开始 一个超级奇怪的问题,郁闷之极 关于jdbc数据库连接,在不同的数据库下测试出现的问题。 集合锁问题 关于线程的问题 这个程序又是怎么回事呢 求RSA算法的包文件
Class buffer.getClass(long from, long offset)
吗?
(Mybuffer)buffer.get(MyDefineClass,41);
我的意思是
ByteBuffer buffer = ByteBuffer.allocate(41); //41为自定义的类的大小
buffer.put(buff,0,41); //buff 为我得到的数据包
现在我该如何将buffer还原为我定义的类啊!
既MyDefineClass MyClass = new MyDefineClass();
如何将buffer中的内容给MyClass谢谢楼上的兄弟们个的建议!
就是实现如下:
MyDefineClass MyClass = new MyDefineClass()
MyClass = (MyDefineClass)buffer;
该如何实现啊??????
ByteBuffer buffer = ...
...
byte[] dat = buffer.getBytes(0, 41);
ByteArrayInputStream bis = new ByteArrayInputStream(dat);
ObjectInputStream ois = new ObjectInputStream(bis);
MyDefineClass obj = (MyDefineClass) ois.readObject();
ObjectInputStream ois = new ObjectInputStream(bis);
这句话跳出一个异常啊!
怎么回事啊!
谢谢啊
是这样的情况:
受到服务器中受到数据包,数据包是许多的结构体(用vc写的struct )!保存到ByteBuffer 中!
我在取出41个byte,一个结构体的大小,结果就出现上面的问题了!
struct data_struct
{
long data1;
char data2;
...
};在Java中
public class DataStruct
{
int data1;
byte data2;
... public DataStruct(byte[] data)
{
DataInputStream dis = new DataInputStream(new ByteArrayInputStream(data));
data1 = dis.readInt();
data2 = dis.readByte();
...
}
}
现在在java中有数据类型来放0~255的数呢?要求是一个字节啊!就是8位啊!
不能有short int 或long
byte就是8位,但它表示-127----128 啊。
我要表示为0---255
谢谢你的指教
能把你的联系方式告诉我吧!我感觉你好厉害啊?
如果用于计算和显示,把它和0xff相与就成了整数0~255