从unsigned const char中读取固定数量的(二进制)字节*

时间:2014-07-11 20:24:14

标签: c++

我在内存中有一个unsigned const char*缓冲区(来自网络)我需要做一些事情。现在让我感到困惑的是,我需要将前两个字节解释为二进制数据,而其余的是ASCII。我没有读取ASCII的问题(我认为),但我无法弄清楚如何只读取无符号数组的前两个字节,并将它们转换为(比方说)一个int。我打算使用reinterpret_cast,但前两个字节不是以空值终止的,而我能找到的唯一其他帮助就是文件IO。

简而言之,我有{0000000000001011}ABC Z123 XY0 5之类的东西,其中大括号外的字符被读为ASCII,而里面的字符应该是一个二进制数,即11)。

2 个答案:

答案 0 :(得分:1)

int c1 = buffer[0];
int c2 = buffer[1];
int number = c1 << 8 + c2;

unsigned char* asciiData = buffer+2;

答案 1 :(得分:1)

我真的不明白为什么字节必须是&#34;空终止&#34;你可以使用reinterpret_cast。我会做什么(目前在我的项目中工作)是:

uint16_t first_bytes = *(reinterpret_cast<const uint16_t*>(buffer));

这样可以获得缓冲区中的前两个字节,并将值赋给first_bytes变量。