gpt4 book ai didi

objective-c - 有符号的 Char 到 Int

转载 作者:行者123 更新时间:2023-12-03 16:55:15 25 4
gpt4 key购买 nike

基本上,我的问题是 cocoa 中的有符号字符到整数和字符串转换。

我在开源 cocoa 蓝牙应用程序中找到了这段代码,并尝试将其应用到我自己的应用程序中。

基本上,我从变量“RSSI”获得一个有符号的字符输出,并希望将其转换为一个int和一个字符串,字符串用于输出到日志,int用于进一步计算。但是,无论我尝试什么,我似乎都无法将其转换,并且如果我尝试将签名字符按原样输出到日志,则只会得到 EXEC_BAD_ACCESS。

签名字符的典型值是“-57 '\307' ”,在被 NSLog 保留之前直接从进程中引用。代码如下:

- (BOOL)isInRange {
BluetoothHCIRSSIValue RSSI = 127; /* Valid Range: -127 to +20 */

if (device) {
if (![device isConnected]) {
[device openConnection];
}
if ([device isConnected]) {
RSSI = [device rawRSSI];
[device closeConnection];
NSLog(RSSI);
}
}
return (RSSI >= -60 && RSSI <= 20);
}

提前致谢。

最佳答案

NSLog()NSString 格式字符串作为其第一个参数,然后是格式字符串中格式说明符的(可选)可变长度变量列表:

NSLog(@"RSSI: %c", RSSI);

你现在得到的(NSLog(RSSI);)完全是错误的。它应该给你这样的编译器警告:

warning: passing argument 1 of 'NSLog' makes pointer from integer without a cast
warning: format not a string literal and no format arguments

您应该始终注意编译器警告,而不是忽略它们。特别是当您的程序在警告所指的同一行崩溃时,它们应该是您犯了错误的危险信号。

顺便说一句,我应该提到 NSLog() 的工作方式与 printf() 非常相似。两个主要区别是 NSLog 的格式字符串应该是 Objective-C 字符串文字 (@"string"),而不是标准 C 字符字符串 ( “string”),并且对象的格式说明符是 %@%@ 替换为对要打印的对象调用 -description 方法返回的字符串。

关于objective-c - 有符号的 Char 到 Int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8689110/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com