我需要转换NSString
或int
,以便我可以使用NSData appendBytes:length。
这
@"734" or 734
到
uint8_t _steps[2];
_steps[0] = 0x02;
_steps[1] = 0xde;
[_data appendBytes:_steps length:2];
- (void)sendSteps:(NSString*)steps
{
NSMutableData *_data = [[NSMutableData alloc] init];
// Need to get (NSString*)steps converted like below:
uint8_t _steps[2];
_steps[0] = 0x02;
_steps[1] = 0xde;
[_data appendBytes:_steps length:2];
}
NSData * _steps = [(NSString*)activity[@"steps"] dataUsingEncoding:NSUTF8StringEncoding];
[_data appendBytes:[_steps bytes] length:[_steps length]];
和
uint8_t * _steps = (uint8_t *)[(NSString*)activity[@"steps"] UTF8String];
[_data appendBytes:_steps length:strlen((char*)_steps)];
“734
”的理想结果是 02de
。
答案 0 :(得分:1)
您想要的代码是
int stepsIntValue = [(NSString*)activity[@"steps"] intValue];
uint8_t _steps[2];
_steps[0] = (stepsIntValue >> 8) & 0xFF;
_steps[1] = stepsIntValue & 0xFF;
[_data appendBytes:_steps length:2];
我不明白实际用途。
你是否只会拉2个字节?如果是,那么为什么不使用htons(3)
uint16_t _steps = htons([(NSString*)activity[@"steps"] intValue]);
[_data appendBytes:&_steps length:sizeof _steps];
当您提取数据时,您可以使用ntohs(3)
。
_steps = ntohs(*(uint16_t *)[_data bytes]);