wpscott / AcFunDanmaku

AcFun直播弹幕及评论工具
MIT License
78 stars 14 forks source link

修复protos的一些问题 #7

Closed orzogc closed 4 years ago

orzogc commented 4 years ago
orzogc commented 4 years ago

另外说一下, Program.cs 这里应该用 ZtLiveScNotifySignal 才对

wpscott commented 4 years ago

int32/int64而不是uint32/uint64是因为,它App端用的是int/long

orzogc commented 4 years ago

java直到java 8才有官方实现的unsigned int/long,protobuf的官方实现是将uint32/uint64转换为java里的int/long:https://github.com/protocolbuffers/protobuf/blob/master/java/core/src/main/java/com/google/protobuf/FieldType.java#L45 从A站网页端的js代码来看,A站官方的proto是用uint32/uint64的

wpscott commented 4 years ago

如果你在js文件里看PacketHeader的结构会发现AcFun在Im.Basic里大部分使用的是int32/int64,所以我在zt.live.interactive里就默认为int32/int64 看protobuf的序列化CodeOutputStream和反序列化代码CodeInputStream,可以看到使用的都是long,换句话说,protobuf在java对uint32/uint64的处理方式和int32/int64是一样的

orzogc commented 4 years ago

既然你坚持,那我就改回来吧