Comments (15)
有的, MagicByte.structBytes
。 但是只能获取固定类型的字节数
from magic-byte.
有的,
MagicByte.structBytes
。 但是只能获取固定类型的字节数
那是否可以对带动态长度属性的对象填充数据后的长度进行支持呢?
from magic-byte.
有的,
MagicByte.structBytes
。 但是只能获取固定类型的字节数
参考: https://github.com/MisterChangRay/magic-byte/wiki/%E5%B8%B8%E7%94%A8%E5%B7%A5%E5%85%B7%E7%B1%BB%E6%96%B9%E6%B3%95那是否可以对带动态长度属性的对象填充数据后的长度进行支持呢?
既然已经序列化了,直接获取字节数组长度不就是了吗
from magic-byte.
有的,
MagicByte.structBytes
。 但是只能获取固定类型的字节数
参考: https://github.com/MisterChangRay/magic-byte/wiki/%E5%B8%B8%E7%94%A8%E5%B7%A5%E5%85%B7%E7%B1%BB%E6%96%B9%E6%B3%95那是否可以对带动态长度属性的对象填充数据后的长度进行支持呢?
既然已经序列化了,直接获取字节数组长度不就是了吗
我有这种:对象有了,只需要长度不需要序列化成二进制的情况,因为我要长度提前准备做分片,然后重新填充头里的数据
from magic-byte.
但是有动态字段的话,不序列化也不能知道具体长度的啊。
from magic-byte.
但是有动态字段的话,不序列化也不能知道具体长度的啊。
是,但是可以直接算,就是固定长度的加被标记为 dynamicSizeof 的属性的值就是总长度,是需要的,否则我现在的情况是需要从整体长度里取动态长度的头(头里有实现 customConvert 的属性,所以长度不确定),我不得不先反序列化再序列化一下得出长度,再把长度和反序列化的值放倒 MResult 里,有点儿多此一举的感觉
from magic-byte.
那就是 MagicByte.structBytes
他了,动态数据结构返回最小值
from magic-byte.
那就是
MagicByte.structBytes
他了,动态数据结构返回最小值
那没有意义,我自己封装了一套框架,从业务系统传入 bean,我要先从 bean 里解出头,然后做别的操作,这个因为咱们框架可以直接从完整的二进制里解出最开始的头,但是我却不知道解出来用了多少字节,还要序列化回去才能知道,太多此一举了。但是MagicByte.structBytes ,动态数据结构返回最小值又和我实际长度不一致
from magic-byte.
报文头部不都是固定长度吗?
不过你可以自定义解析报文体,当调用自定义解析的时候会传入下一次解析位置,也就变相知道头有多大了。
from magic-byte.
报文头部不都是固定长度吗? 不过你可以自定义解析报文体,当调用自定义解析的时候会传入下一次解析位置,也就变相知道头有多大了。
不是固定的,因为我里面有个动态长度的 ip 字段,支持 ipv6 和 ipv4 所以长度是动态的。
“自定义解析报文体”这个是不是意味着我解析对象里封装一个 Header 和一个 Object body,然后对 body 做自定义解析,拿 nextIndex。
但是我的框架是可以对应多个项目的,不同项目头不一样,所以我 Header 也是 Object 类型,用自定义解析来操作的,自定义解析的时候 再调用 MagicBytes.pack 方法传入的类型是我通过注入我额外写的 getHeaderClazz 接口的实现类获取的,所以这个时候我调用 MResult.build 需要告诉咱这个框架我用了多少字节,这个目前就只能反序列化再序列化获取长度了,如果能直接计算就可以省掉序列化浪费的时间和内存空间
from magic-byte.
你们报文设计不会IP在报文类型前面吧
from magic-byte.
你们报文设计不会IP在报文类型前面吧
ip 就在私有协议的报文头里。
主要是因为封了一个通用协议对象,第一个属性是头,不同项目的头不一样,所以头的长度必须反序列化之后才能知道长度,但是 MResult 里要填长度,所以我不得不再反序列化回去,才能知道从全部数据中用了多少字节反序列化出的头
from magic-byte.
你们报文设计不会IP在报文类型前面吧
ip 就在私有协议的报文头里。
主要是因为封了一个通用协议对象,第一个属性是头,不同项目的头不一样,所以头的长度必须反序列化之后才能知道长度,但是 MResult 里要填长度,所以我不得不再反序列化回去,才能知道从全部数据中用了多少字节反序列化出的头
哥哥哥,看看这个问题
from magic-byte.
Mresult是自定义序列化的啊,既然是自己读的数据,读了多少肯定能知道啊。
如果你用框架的话,现在确实没有返回读取的字节数, 可以考虑后面新增一个方法:返回读取的字节数和对象
from magic-byte.
Mresult是自定义序列化的啊,既然是自己读的数据,读了多少肯定能知道啊。
如果你用框架的话,现在确实没有返回读取的字节数, 可以考虑后面新增一个方法:返回读取的字节数和对象
因为我是这么用的
先解了个头出来,但是头里是有动态长度字段的,所以这么解出来我不知道头用了多少字节。
希望新增一个方法:返回读取的字节数和对象,这个可以满足需求,返回类型感觉直接用 MResult 就行
from magic-byte.
Related Issues (20)
- MConverter 的 pack 接口希望能把已经解析的属性信息作为入参传入 HOT 6
- 建议废弃 registerCMD(int cmd, Class<? extends MagicMessage> msgClazz) 方法 HOT 4
- 建议 dynamicSizeOf 支持表达式 HOT 4
- 增加消息注册,消息类型反序列化时可以直接映射
- MConverter 的 unpack 接口希望能把要序列化的对象信息作为入参传入 HOT 3
- 希望可以自定义实现校验和且支持 byte[] 类型作为校验和数据类型 HOT 5
- dynamicSize 支持接口类 HOT 1
- dynamicSizof wiki 没更新 HOT 2
- 如果 dynamicsizeof 指向的属性名重名了,会导致序列化结果错误
- @MagicConverter 和 dynamicSize 没法共存 HOT 2
- @MagicConverter 的 attachParams 能否通过读取别的值获取参数 HOT 8
- 新增一个方法:返回读取的字节数和对象
- 自定义序列化传入的Object,应该传入根基对象 HOT 5
- 自定义序列化 unpack 方法希望传入根对象
- 异常栈无法看出报错位置 HOT 3
- byte[] 这种不定长类型如果配置了 custom 注解还检查是否指定长度 HOT 1
- BUG:作为属性的类的属性如果都使用了 @MagicConverter 将会导致反序列结果不正确 HOT 5
- BUG:子类继承父类的时候序列化结果为空数组 HOT 1
- 新版本没有发布到**仓库 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from magic-byte.