社区
Java SE
帖子详情
关于类型转换的问题
zhanganow
2003-08-21 10:37:57
ByteBuffer buffer = ByteBuffer.allocate(41); //41为自定义的类的大小
buffer.put(buff,0,41); //buff 为我得到的数据包
现在我该如何将buffer还原为我定义的类啊!
既可以实现 buffer.get(MyDefineClass,41);
...全文
23
25
打赏
收藏
关于类型转换的问题
ByteBuffer buffer = ByteBuffer.allocate(41); //41为自定义的类的大小 buffer.put(buff,0,41); //buff 为我得到的数据包 现在我该如何将buffer还原为我定义的类啊! 既可以实现 buffer.get(MyDefineClass,41);
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
25 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zhanganow
2003-08-22
打赏
举报
回复
但确实是一个结构体啊!
是这样的情况:
受到服务器中受到数据包,数据包是许多的结构体(用vc写的struct )!保存到ByteBuffer 中!
我在取出41个byte,一个结构体的大小,结果就出现上面的问题了!
cbhyk
2003-08-22
打赏
举报
回复
这说明dat中取到的数据不是一个对象
zhanganow
2003-08-22
打赏
举报
回复
错误为java.io.StreamCorruptedException: invalid stream header
zhanganow
2003-08-22
打赏
举报
回复
TO :cbhyk()
ObjectInputStream ois = new ObjectInputStream(bis);
这句话跳出一个异常啊!
怎么回事啊!
谢谢啊
cbhyk
2003-08-22
打赏
举报
回复
是不是这个意思:
ByteBuffer buffer = ...
...
byte[] dat = buffer.getBytes(0, 41);
ByteArrayInputStream bis = new ByteArrayInputStream(dat);
ObjectInputStream ois = new ObjectInputStream(bis);
MyDefineClass obj = (MyDefineClass) ois.readObject();
zhanganow
2003-08-22
打赏
举报
回复
我的问题很急啊!!!!!
怎么没有人理我啊!
5555555555555555555555555555555555555
cbhyk
2003-08-22
打赏
举报
回复
我是重庆的,上不了QQ
zhanganow
2003-08-22
打赏
举报
回复
多些,你是什么地方的啊?
我是杭州的!愿与你交个朋友!我的QQ:26065534
cbhyk
2003-08-22
打赏
举报
回复
如果是用于表示,-127~128和0~255没什么区别,都是0x00~0xff
如果用于计算和显示,把它和0xff相与就成了整数0~255
zhanganow
2003-08-22
打赏
举报
回复
TO cbhyk:
byte就是8位,但它表示-127----128 啊。
我要表示为0---255
谢谢你的指教
能把你的联系方式告诉我吧!我感觉你好厉害啊?
cbhyk
2003-08-22
打赏
举报
回复
byte就是8位
zhanganow
2003-08-22
打赏
举报
回复
再问cbhyk
我在VC中有一个unsigned byte 来放一个0~~255的数字
现在在java中有数据类型来放0~255的数呢?要求是一个字节啊!就是8位啊!
不能有short int 或long
zhanganow
2003-08-22
打赏
举报
回复
谢谢!
cbhyk
2003-08-22
打赏
举报
回复
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();
...
}
}
zhanganow
2003-08-21
打赏
举报
回复
兄弟们,好象都不行啊!
我的意思是
ByteBuffer buffer = ByteBuffer.allocate(41); //41为自定义的类的大小
buffer.put(buff,0,41); //buff 为我得到的数据包
现在我该如何将buffer还原为我定义的类啊!
既MyDefineClass MyClass = new MyDefineClass();
如何将buffer中的内容给MyClass
谢谢楼上的兄弟们个的建议!
jyn01
2003-08-21
打赏
举报
回复
用强制类型转换因该没有问题吧。
huancaimihai
2003-08-21
打赏
举报
回复
直接向上转型就可以了
楼上说的都对
whyxx
2003-08-21
打赏
举报
回复
直接用你定义的类强制转换就可以了
(Mybuffer)buffer.get(MyDefineClass,41);
TomClus8888
2003-08-21
打赏
举报
回复
如果你获得的数据包本身就是MyDefineClass强制得到的BYTE数据包,那么楼上的办法是一定可行的。或者说存在类的继承关系时候,也可以,不过顺序是有要求的。
topbit
2003-08-21
打赏
举报
回复
是要实现
Class buffer.getClass(long from, long offset)
吗?
加载更多回复(5)
C语言
类型转换
-自动
类型转换
、强制
类型转换
、指针
类型转换
数据
类型转换
就是将数据(变量、数值、表达式的结果等)从一种
类型转换
为另一种类型。 自动
类型转换
自动
类型转换
就是编译器默默地、隐式地、偷偷地进行的数据
类型转换
,这种转换不需要程序员干预,会自动发生。 将...
C语言中关于强制
类型转换
问题
1.算术运算式中,低类型能够转换为高类型。 a.若两种类型的字节数不同,转换成字节数高的类型 b.若两种类型的字节数相同,且一种有符号,一种无符号,则转换成无符号类型 2.赋值表达式中,右边表达式的值自动...
C语言的数据的强制
类型转换
定义:强制
类型转换
是把变量从一种
类型转换
为另一种数据类型。 强制
类型转换
算是C语言中常见常考的一项内容,如对于类型处理不好,将会产生错误结果。对于某些类型的转换编译器可隐式地自动进行,不需人工干预,称...
【Java】强制
类型转换
强制
类型转换
,可以理解为自动
类型转换
的逆过程。是将大容量的数据
类型转换
为小容量的数据类型。 使用时,前面要加上强制
类型转换
符号()。 2. 应用场景 需要将数据从高精度数据
类型转换
为低精度数据类型。(即高精度...
C++:28---类
类型转换
之
类型转换
运算符operator(explicit)
一、概念 ...类的隐式
类型转换
:是将其他
类型转换
为类类型
类型转换
运算符:将类
类型转换
为其他类型 二、格式与注意事项
类型转换
函数的形式: type表示某种类型
类型转换
运算符可以面向任意类...
Java SE
62,614
社区成员
307,327
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章