【发布时间】:2015-05-23 18:23:59
【问题描述】:
我通过 Socket 接收字节流(或 C++ 中的字符)。现在我想解释它们。我知道哪些数据类型隐藏在字节后面。我的消息看起来像这样:
value1 --> char (1 byte)
value2 --> long (8 bytes)
value3 --> short (2 bytes)
...
我怎样才能有效地实现口译?
//编辑:那不行,字节不是描述字符而是整数。
我想过用 memcpy 和 atoi 做(目前还没有测试):
char value1 = *charPtr;
charPtr++;
char value2[8]="";
std::memcpy(charPtr,value2,8);
long v2 = atoi(value2);
charPtr+=8;
char value3[2]="";
std::memcpy(charPtr,value3,2);
short v3 = atoi(value3);
charPtr+=2;
【问题讨论】:
-
您是否考虑过使用 std::stringstream 及其运算符>> 来获取数据?
-
char* 中的数据不是字符,所以我认为 stringstream 行不通。
标签: c++ arrays casting char byte