c# bool 竟然占两个字节

SoulRed 2017-01-11 12:55:49
我将一个类序列化成二进制时发现
当bool为false的时候。不占字节
当bool为true的时候。占两个字节

这样对么?用的是protobuf-net 这个序列化工具
...全文
1181 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
SoulRed 2017-12-26
  • 打赏
  • 举报
回复
protobuf的设计是:当值为默认值时,不占字节。非默认值时,KEY和VALUE 共同分配空间
驰愿 2017-03-20
  • 打赏
  • 举报
回复
顺便说一句,那些说有什么用的。关你屁事。不知道就不要回答,知道就回答。就是因为这些傻逼。不回答还要凑个热闹。你知道这个有什么用。每次搜点学习资料出来一些这样的回答,烦都烦死
驰愿 2017-03-20
  • 打赏
  • 举报
回复
应该是一个字节。我用bool指针自加。只便宜了一个字节的地址
_iorilan 2017-01-14
  • 打赏
  • 举报
回复
是proto-buf的特性。
SoulRed 2017-01-13
  • 打赏
  • 举报
回复
引用 4 楼 Marcus2006 的回复:
有意思。顺便问句,大小会影响你的产品么?
会,在协议里必须要确定字节具体数量
marcus2006 2017-01-13
  • 打赏
  • 举报
回复
有意思。顺便问句,大小会影响你的产品么?
  • 打赏
  • 举报
回复
如果是 json,还占用8个字节呢。
nikolaichow 2017-01-13
  • 打赏
  • 举报
回复
拜读,研究这个有点意思
Poopaye 2017-01-13
  • 打赏
  • 举报
回复
占1个,protobuf是key-value格式保存的,所以你这里的情况:第一个字节是key,第二个字节才是数据 至于false不占空间是因为字段的值如果是默认值不会进行序列化
llsus 2017-01-13
  • 打赏
  • 举报
回复
引用 5 楼 DOwnstairs 的回复:
[quote=引用 4 楼 Marcus2006 的回复:] 有意思。顺便问句,大小会影响你的产品么?
会,在协议里必须要确定字节具体数量[/quote] 难道你是手动反序列化的?说实话,不自动我还不会呢
stherix 2017-01-11
  • 打赏
  • 举报
回复
这个和序列化工具有关 32位的c#里 bool其实是4字节

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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