NSString stringWithFormat 添加了“ffffff”

Posted

技术标签:

【中文标题】NSString stringWithFormat 添加了“ffffff”【英文标题】:NSString stringWithFormat added "ffffff" 【发布时间】:2016-05-09 07:26:25 【问题描述】:

我正在尝试从 NSData 获取字节并将其放入 NSString。当我这样做时,同时添加了“ffffff”:

char *array = (char *)[deviceInfo bytes];
return [NSString stringWithFormat:@"%02x:%02x:%02x:%02x:%02x:%02x", array[5],array[4],array[3],array[2],array[1],array[0]];

返回“53:ffffffcb:ffffffb8:51:09:fffffff0”

【问题讨论】:

如果你用uint8_t *array = ...正确声明array会发生什么? 是的,它有效!我将使用 unsigned char 代替。请添加喜欢的答案您的评论。 【参考方案1】:

问题与符号扩展有关,因为编译器会将您的signed char 提升为unsigned intfffff 的数字是负数。 %x 格式需要 unsigned int 参数。

正确声明 array 将解决问题:

const uint8_t *array = [deviceInfo bytes];

【讨论】:

以上是关于NSString stringWithFormat 添加了“ffffff”的主要内容,如果未能解决你的问题,请参考以下文章

NSString stringWithFormat 添加了“ffffff”

NSString stringWithFormat 无法添加反斜杠

Xamarin.iOS 中 NSString stringWithFormat 的等价物是啥

“NSString stringWithFormat:”在 32 位设备中具有“%zd”奇怪行为

OC 在循环体中调用[NSString stringWithFormat:@"%@",Object] 方法的内存问题。

追加到 NSString 方法的开头