因為我一開始想對<dd07>做swap之後再印出數值,結果是65XXX多少的,後來把swap拿掉,就印出我真正想要的數字2013
//以下為程式碼
NSData *myData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Test" ofType:@"bin"]];
NSLog(@"myData:%@",myData);
NSRange range = NSMakeRange(0, 2);
NSLog(@"year data:%@",[myData subdataWithRange:range].description);
NSData* yearData = [myData subdataWithRange:range];
unsigned short x;
[yearData getBytes:&x length:sizeof(x)];
NSLog(@"x:%x",x);
//unsigned short year = [self swap:x];
NSLog(@"year:%hu",x);
year data:<dd07>
x:7dd
year:2013
-(UInt16) swap:(UInt16)s {
NSLog(@"swap");
UInt16 temp = s << 8;
NSLog(@"%x",temp);
temp |= (s >> 8);
NSLog(@"%x",temp);
return temp;
}
//20140207發現
iOS7在寫入時,不會自動換成little-endian
所以結論是,
讀取時,是以little-endian的方式直接讀取data
寫入時,是以data的格式直接寫入,所以要先swap成little-endian的排列,再寫入。
//20140207發現
iOS7在寫入時,不會自動換成little-endian
所以結論是,
讀取時,是以little-endian的方式直接讀取data
寫入時,是以data的格式直接寫入,所以要先swap成little-endian的排列,再寫入。
沒有留言:
張貼留言