如何在iPhone App中通过蓝牙以二进制forms传输数据

我正在为iOS和Mac开发设备驱动程序软件。 在这里,我想通过blutoogh将二进制forms的数字数据从我的iPhone应用程序传输到设备。 假设我想转移数据,如2013年1月20日上午10:30,我需要以二进制顺序转移200120131030。 意味着第一个二进制的20然后二进制的01然后二进制的2013年等等…其他设备没有在iOS上运行。 我将此数字转换为NSData但无法理解NSData是否为abinary数据。 有没有办法让它二进制并转移它。 (我可以通过蓝牙传输数据)

假设您决定将日期表示为12位数字或12字节的字符串。 你可以这样得到NSData:

NSDate *date = // the date you start with NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"ddMMYYYYHHmm"]; NSString *dateString = [formatter stringFromDate:date]; // dateString can be any string you wish to send. In this example, it represents a date NSData *data = [dateString dataUsingEncoding:NSUTF8StringEncoding]; 

您可以使用NSData上的字节选择器获取指向字节数据的指针。 假设您要复制数据:

 NSUInteger length = [data length]; char *buffer = (char *)malloc(length); memcpy(buffer, [data bytes], length); 

正如我在评论中提到的,更紧凑的序列化是一个长整数。 你可以得到这样的小数据:

 unsigned long dateInt = [dateString intValue]; NSData *data = [NSData dataWithBytes:&dateInt length:sizeof(dateInt)]; 

…然后以相同的方式获取字节。 要记住的重要一点是,这些字节的发送者和接收者必须就如何解释它们达成一致。