2

我刚买了一个WIFI摄像头。我需要开发一个 iPad 应用程序来向这个相机发送一个 url 请求,然后在 iPad 中播放 mpeg4 流。

收到请求后,本相机向 iPad 发送回网络数据包。在每个数据包的开头,它包含 8 位无符号字符,指示该数据包的类型,例如视频或音频。

由于 NSData 是 16 位格式,我怎样才能获得第一个 8 位无符号字符并识别此数据包的类型?

我想我走错了路。我应该专注于数据包层,了解如何使用C语言处理网络数据包。但是,我现在不擅长 C 语言。谁能告诉我如何使用C来控制网络数据包。

4

1 回答 1

1

如果您使用的是 NSData 对象,则可以使用该bytes方法检索指向 NSData 内容的指针。

此方法返回一个void指针。你可以把它分配给你想要的任何东西。

例如:

unsigned char * x = [ myDataObject bytes ];

将允许您读取每个字节(8 位)的 NSData 内容字节,因为您有一个char指针。

x[ 0 ]将是第一个字节,x[ 1 ]第二个等。

如果你使用另一种类型,你会得到不同的结果。例如:

unsigned short int * x = [ myDataObject bytes ];

假设unsigned short int您的平台上的 an 是 16 位(可能会有所不同),那么您将按 16 位访问 NSData 内容。

在最后一个示例中,x[ 0 ]将是前 16 位等...

指针运算也是如此。

于 2011-11-16T01:04:32.023 回答