谁能建议一种从中读取字节的方法(例如:NSData
中的读取函数)@interface
NSInputStream
NSStream
问问题
25904 次
5 回答
26
如何读取 NSData 中的二进制字节?可以帮助您:
NSString *path = @"…put the path to your file here…";
NSData * fileData = [NSData dataWithContentsOfFile: path];
const char* fileBytes = (const char*)[fileData bytes];
NSUInteger length = [fileData length];
NSUInteger index;
for (index = 0; index<length; index++) {
char aByte = fileBytes[index];
//Do something with each byte
}
于 2012-09-17T04:26:17.727 回答
9
如果需要读取接口,还可以NSInputStream
从对象创建:NSData
NSData *data = ...;
NSInputStream *readData = [[NSInputStream alloc] initWithData:data];
[readData open];
但是,您应该知道initWithData
复制数据的内容。
于 2012-09-17T04:40:41.227 回答
2
最简单的方法之一是使用NSData getBytes:range:。
NSData *data = ...;
char buffer[numberOfBytes];
[data getBytes:buffer range:NSMakeRange(position, numberOfBytes)];
其中位置和长度是您要在 NSData 中读取的位置,长度是您要读取的字节数。无需复制。
于 2016-12-10T18:51:37.990 回答
1
Alex已经提到NSData getBytes:range: 但也有NSData getBytes:length:从第一个字节开始。
NSData *data = ...;
char buffer[numberOfBytes];
[data getBytes:buffer length:numberOfBytes];
于 2020-05-04T19:00:25.273 回答
0
可以这样做..不要忘记在使用后释放字节数组。
NSData* dat = //your code
NSLog(@"Receive from Peripheral: %@",dat);
NSUInteger len = [dat length];
Byte *bytedata = (Byte*)malloc(len);
[dat getBytes:bytedata length:len];
int p = 0;
while(p < len)
{
printf("%02x",bytedata[p]);
if(p!=len-1)
{
printf("-");
}//printf("%c",bytedata[p]);
p++;
}
printf("\n");
// byte array manipulation
free(bytedata);
于 2018-04-11T10:08:11.293 回答