我刚买了一台WIFI相机。我需要开发一个iPad应用程序来向这个摄像头发送网址请求,然后在iPad上播放mpeg4流媒体。
收到请求后,此摄像机会将网络数据包发送回iPad。在每个数据包的开头,它包含8位无符号字符,表示此数据包的类型,例如视频或音频。
由于NSData是16位格式,我如何获得第一个8位无符号字符并识别该数据包的类型?
我想我走错了路。我应该专注于数据包层,并找出如何使用C语言来处理网络数据包。但是,我现在对C语言并不擅长。任何人都可以告诉我如何使用C来控制网络数据包。
答案 0 :(得分:1)
如果您使用的是NSData对象,则可以使用bytes
方法检索指向NSData内容的指针。
此方法返回void
指针。你可以把它分配给你想要的任何东西。
例如:
unsigned char * x = [ myDataObject bytes ];
允许你读取每个字节的NSData内容字节(8位),因为你有一个char
指针。
x[ 0 ]
将是第一个字节,x[ 1 ]
是第二个字节,等等。
如果您使用其他类型,您将获得不同的结果。例如:
unsigned short int * x = [ myDataObject bytes ];
假设您的平台上unsigned short int
为16位(可能不同),那么您将以16位访问NSData内容。
在最后一个例子中,x[ 0 ]
将是前16位等等......
指针算法也是如此。