我有这个问题与分配一个int为char不行为。 我有一个const char * 数据,这就像一个储存型动物对象的尺寸。 我用这个,以验证是否数据具有一个目的,如果是这样,那么我追加整数数据的大小相同。 的问题是,我希望,当我追加到数据,移动在ASCII表2点的位置,但如何数据表现为字符串,我不明白如何运作这个加法。诠释追加为char,如我所料
例子:我有一个为const char *数据存储一个char“'”,以及具有96的值,如果我做:
data += 2;
我希望的结果是b,但是是<与值60.
我使用函数sys_log来显示发生了什么。
功能启动:
void Boot(const char* data){
[...]
/*
* OBJECT PROTO
*/
sys_log(0, "BOOT: OBJ PROTO data string: data = %s", data);
sys_log(0, "BOOT: OBJ PROTO size of data: %d", decode_2bytes(data));
if (decode_2bytes(data) != sizeof(TObjectProto))
{
sys_err("object proto table size error");
thecore_shutdown();
return;
}
sys_log(0, "BOOT: OBJ PROTO data after decode_2bytes(data): data = %s", data);
data += 2;
sys_log(0, "BOOT: OBJ PROTO data str + 2: data = %s", data);
size = decode_2bytes(data);
sys_log(0, "BOOT: OBJ PROTO data to size: size = %d", size);
data += 2;
sys_log(0, "BOOT: OBJ PROTO data str + 2: data = %s", data);
sys_log(0, "BOOT: OBJ PROTO data to size: size = %d", decode_2bytes(data));
CManager::instance().LoadObjectProto((TObjectProto *) data, size);
sys_log(0, "To data assign %d * %d", size, sizeof(TObject));
data += size * sizeof(TObjectProto);
sys_log(0, "BOOT: OBJ PROTO data str: data = %s", data);
[...]
decode_2bytes():
inline WORD decode_2bytes(const BYTE *a)
{
return (*((WORD *) a));
}
sys_log:
Apr 12 09:05:54.205886 :: BOOT: OBJ PROTO data string: data = `
Apr 12 09:05:54.205914 :: BOOT: OBJ PROTO size of data: 96
Apr 12 09:05:54.205924 :: BOOT: OBJ PROTO data after decode_2bytes(data): data = `
Apr 12 09:05:54.205933 :: BOOT: OBJ PROTO data str + 2: data = <
Apr 12 09:05:54.205948 :: BOOT: OBJ PROTO data to size: size = 60
Apr 12 09:05:54.205961 :: BOOT: OBJ PROTO data str + 2: data = ½6
Apr 12 09:05:54.205970 :: BOOT: OBJ PROTO data to size: size = 14013
Apr 12 09:05:54.209238 :: To data assign 60 * 40
Apr 12 09:05:54.209247 :: BOOT: OBJ PROTO data str: data = (
如可以在sys_log看到,我展示一下包含数据,值,并加上我得到的结果2.
它看起来像您要添加2的指针,而不是 – Nattrass
你没有追加任何东西,你正在移动一个指针取消引用值。在ASCII中,反引号是96,'<'是60.你的缓冲区显然是以{96,0,60,0,171,54,...'开头的。 (并且你正尝试将二进制数据打印为一个字符串。)我推荐[The Definitive C++ Book Guide and List](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)。 – molbdnilo
你似乎忘记了'data'是一个指针。你将两个添加到一个指针。 –