按位存放问题.

wu__123 2010-01-25 09:45:23
我要构造一个特定的消息,就是要在指定的位置放规定好的类型值,,想问下大家除了用memcpy 外还有什么其它更好的方法没?

就比如要 构造一个下面的消息格式:

16 bits String 16 bits String 16 bits

...全文
125 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
wu__123 2010-01-25
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 zhouzhangkui 的回复:]
引用 9 楼 lhylhy 的回复:
引用 5 楼 wu__123 的回复:
引用 3 楼 zhouzhangkui 的回复:
既然你的格式已經定下來了,又有固定的大小
就可以直接用數組Byte by[XXX] 直接賦值操作


字符串怎么可能有固定大小呢.. - -!!

那你怎么解码?怎么知道字符串是否结束?


按他字面的意思
这三个16 bits  应该是他的效验符       
作为解码标志的
[/Quote]

它不是字符串的检验符,就是一些字符串信息,,我也在想怎么把这个字符串解析出来呢.
周药师 2010-01-25
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 lhylhy 的回复:]
引用 5 楼 wu__123 的回复:
引用 3 楼 zhouzhangkui 的回复:
既然你的格式已經定下來了,又有固定的大小
就可以直接用數組Byte by[XXX] 直接賦值操作


字符串怎么可能有固定大小呢.. - -!!

那你怎么解码?怎么知道字符串是否结束?

[/Quote]
按他字面的意思
这三个16 bits 应该是他的效验符
作为解码标志的
lhy 2010-01-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wu__123 的回复:]
引用 3 楼 zhouzhangkui 的回复:
既然你的格式已經定下來了,又有固定的大小
就可以直接用數組Byte by[XXX] 直接賦值操作


字符串怎么可能有固定大小呢.. - -!!
[/Quote]
那你怎么解码?怎么知道字符串是否结束?
周药师 2010-01-25
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wu__123 的回复:]
引用 6 楼 zhouzhangkui 的回复:
格式一定
管他大小 按照你的格式直接賦值進去


你说的就是memcpy啦.

[/Quote]
memcpy ?
方法多的是,
幾個String 直接加不行嗎?
wu__123 2010-01-25
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zhouzhangkui 的回复:]
格式一定
管他大小 按照你的格式直接賦值進去
[/Quote]

你说的就是memcpy啦.
周药师 2010-01-25
  • 打赏
  • 举报
回复
格式一定
管他大小 按照你的格式直接賦值進去
wu__123 2010-01-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zhouzhangkui 的回复:]
既然你的格式已經定下來了,又有固定的大小
就可以直接用數組Byte by[XXX] 直接賦值操作
[/Quote]

字符串怎么可能有固定大小呢.. - -!!
周药师 2010-01-25
  • 打赏
  • 举报
回复
或者用
list <BYTE> By;
或者vector 都可以
周药师 2010-01-25
  • 打赏
  • 举报
回复
既然你的格式已經定下來了,又有固定的大小
就可以直接用數組Byte by[XXX] 直接賦值操作
wu__123 2010-01-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lhylhy 的回复:]
固定长度的搁在前面,字符串搁后面。
[/Quote]

消息格式是这样定的,不能改的,还是我没听明白你的意思?请说具体点
lhy 2010-01-25
  • 打赏
  • 举报
回复
固定长度的搁在前面,字符串搁后面。
周药师 2010-01-25
  • 打赏
  • 举报
回复
办法要你自己想的
这个看你怎么定,你可以订的复杂点
16 bits String1 +String2+String3 16 bits String4+String5+String6 16 bits String7+String8+String9

多做几个如:
条件一: 第三个byte 开始是String1
条件二: String1 String3 String4 String6 String7 String9 (6个同时存在)
条件三...
....
wu__123 2010-01-25
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 zhouzhangkui 的回复:]
引用 13 楼 wu__123 的回复:
引用 12 楼 zhouzhangkui 的回复:
“我也在想怎么把这个字符串解析出来呢.”
既然考虑这问题
不如像我说的
做几个标志符,作为解码的标志


我发的是一个标准的协议,所以这消息格式是不能自己改的

不是叫你改格式
是叫你把里面的某些字符串 作为固定的常量来作为标识符
例如:
16 bits  String1 +String2 16 bits String3+String4  16 bits String5+String6
把你的String 分解出来 把String1,String3,String5 作为标识符

[/Quote]

万一你那个标识符也在那个字符串中存在怎么办? 这机率是很小,但也存在,只能用'\0'来判断吧
周药师 2010-01-25
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 wu__123 的回复:]
引用 12 楼 zhouzhangkui 的回复:
“我也在想怎么把这个字符串解析出来呢.”
既然考虑这问题
不如像我说的
做几个标志符,作为解码的标志


我发的是一个标准的协议,所以这消息格式是不能自己改的
[/Quote]
不是叫你改格式
是叫你把里面的某些字符串 作为固定的常量来作为标识符
例如:
16 bits String1 +String2 16 bits String3+String4 16 bits String5+String6
把你的String 分解出来 把String1,String3,String5 作为标识符
wu__123 2010-01-25
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 zhouzhangkui 的回复:]
“我也在想怎么把这个字符串解析出来呢.”
既然考虑这问题
不如像我说的
做几个标志符,作为解码的标志
[/Quote]

我发的是一个标准的协议,所以这消息格式是不能自己改的
周药师 2010-01-25
  • 打赏
  • 举报
回复
“我也在想怎么把这个字符串解析出来呢.”
既然考虑这问题
不如像我说的
做几个标志符,作为解码的标志

1,316

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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