我对 obj c 添加一个额外的字节到 uint8_t 数组有一个奇怪的问题。
以下是涉及的两种方法:
视图控制器.m
- (void)viewDidLoad {
// hexData = NSData object
const uint8_t *hexBytes = [hexData bytes];
// header is first 3 bytes
uint8_t headerBytes[] = {hexBytes[0],hexBytes[1],hexBytes[2]};
// output the size
NSLog(@"View did load header size: %lu", sizeof(headerBytes));
// create a MessageHeader object
MessageHeader *messageHeader = [[MessageHeader alloc] initWithBytes:headerBytes];
}
消息头.h
- (id)initWithBytes:(uint8_t *)bytes {
self = [super init];
if(self != nil){
NSLog(@"Message header init bytes size: %lu", sizeof(bytes));
NSData *data = [NSData dataWithBytes:bytes length:sizeof(bytes)];
self.bytes = bytes;
}
return self;
}
控制台输出
查看确实加载了标题大小:3
消息头初始字节大小:4
这很奇怪!将字节输出到屏幕显示了一个额外的字节被附加到数据中,没有明显的原因。如果eef231
是输入,那么eef23150
是 init 方法中的输出。那个额外的字节似乎是随机的。
我想知道它是否可能是方法之间uint8_t headerBytes[]
和方法uint8_t *bytes
中的演员init
。
如果有人对此有更多信息,那就太好了。谢谢