我有一個奇怪的問題與obj c通過uint8_t數組添加額外的字節。Obj c將字節添加到方法之間的uint8_t數組?
下面是所涉及的兩種方法:
ViewController.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];
}
MessageHeader.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
消息頭的init字節大小:4
這是很奇怪!將字節輸出到屏幕上會顯示額外的字節已被添加到數據中,原因不明。如果eef231
是輸入,那麼eef23150
是init方法中的輸出。該額外的字節看起來是隨機的。
我不知道它是否可能是uint8_t headerBytes[]
和uint8_t *bytes
之間的init
方法。
如果有人有任何更多的信息,這將是偉大的。謝謝
正確的感謝。所以接下來的問題是,我怎樣才能傳遞一個'uint8_t'數組而不是一個指針?或者我不能? –