怎么判断指针指向数据的类型

如何判断指针指向数据的类型
这样的,别人传给我一段void* 的buffer,里面的数据有可能是一个int值,也有可能是char*的字符串,我需要对不同的类型做不同处理,如何平判断?
------解决思路----------------------
除非你知道buffer里面的内容,你才可以这么做,但是这又是你要做的,所以说,这是个误解的题目。

任何类型都可以被表示成void*

如果非要这么做的话,双方定义协议是必须的
------解决思路----------------------
引用:
Quote: 引用:

除非你知道buffer里面的内容,你才可以这么做,但是这又是你要做的,所以说,这是个误解的题目。

任何类型都可以被表示成void*

如果非要这么做的话,双方定义协议是必须的

这样的,对方是php程序,我是php扩展,对方没有类型这个概念。。。


这么看来,你要自己动手,实现一个PHP的类型系统。
------解决思路----------------------
或者让对方传递时,增加判断标志位。。
------解决思路----------------------
对于内存来说,不管你是什么数据,它都是干吧吧的二进制,你怎么能够识别出整型和浮点的区别?BYTE和WORD的区别?必须要有规则才能识别啊
------解决思路----------------------
问题是有点无聊,看似是技术贴,其实是灌水
------解决思路----------------------
两边协商一下 就是了!让你自己判断  谁会啊!
------解决思路----------------------
电脑内存或文件内容只是一个一维二进制字节数组及其对应的二进制地址;
人脑才将电脑内存或文件内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……

------解决思路----------------------
你需要自己知道,然后对应的转换。
------解决思路----------------------
void是一个很抽象的类型,一般来说都使用“值+枚举类型”做为一个void* 来传送,“值”一般都是结构体,这样的话可以根据“枚举类型”来判断这个值是什么类型的。就是上面大家所说的协议。
如果没有协议硬判断的话是不行的。
------解决思路----------------------
“里面的数据有可能是一个int值,也有可能是char*的字符串”

只能 试探。

先 是 (char*) 看看 是不是(除了 0, 8, 10, 13) , 不是 就是 int
------解决思路----------------------
类似:
__isascii returns a non-zero value if c is an ASCII character (in the range 0x00 – 0x7F). 

------解决思路----------------------
建议学习一下mfc的序列化,
《深入浅出MFC》里面有讲
------解决思路----------------------
模板