使用 NSOutputStream 发送字节数组
Sending Byte Array using NSOutputStream
我必须将 8 字节数组发送到 IP 我的数据为 NSMutableArray 包含 0 到 255 之间的整数值据我所知我必须在发送之前将其转换为 nsdata。
NSString *error;
NSData *data = [NSPropertyListSerialization dataFromPropertyList dataTobeSent format:NSPropertyListBinaryFormat_v1_0 errorDescription:&error];
[outputStream write:[data bytes] maxLength:[data length]];
我正在使用这种方式,但它给了我超过 8 个字节的 NSdata 对象
任何帮助将不胜感激
你对 NSPropertyListSerialization 的假设是错误的,无论你指定什么格式,它都会构造一个 NSData 对象,这个对象可以转换回 propertyListObject,所以你拥有的不仅仅是原始数据。
你应该做类似的东西
uint8_t dataArray[8]; // an 8 byte array
for (NSInteger i = 0; i < 8; i++) {
dataArray[i] = (uint8_t) [dataTobeSent[0] integerValue];
}
[outputStream write:dataArray maxLength:8];
确保您的 dataTobeSent 确实是一个恰好包含 8 个值的数组,否则请调整代码
我必须将 8 字节数组发送到 IP 我的数据为 NSMutableArray 包含 0 到 255 之间的整数值据我所知我必须在发送之前将其转换为 nsdata。
NSString *error;
NSData *data = [NSPropertyListSerialization dataFromPropertyList dataTobeSent format:NSPropertyListBinaryFormat_v1_0 errorDescription:&error];
[outputStream write:[data bytes] maxLength:[data length]];
我正在使用这种方式,但它给了我超过 8 个字节的 NSdata 对象
任何帮助将不胜感激
你对 NSPropertyListSerialization 的假设是错误的,无论你指定什么格式,它都会构造一个 NSData 对象,这个对象可以转换回 propertyListObject,所以你拥有的不仅仅是原始数据。
你应该做类似的东西
uint8_t dataArray[8]; // an 8 byte array
for (NSInteger i = 0; i < 8; i++) {
dataArray[i] = (uint8_t) [dataTobeSent[0] integerValue];
}
[outputStream write:dataArray maxLength:8];
确保您的 dataTobeSent 确实是一个恰好包含 8 个值的数组,否则请调整代码