0

我被困住了。我给你我使用的确切代码,而不是示例:

所以,我做了两个这样的字符串:

DestChoice = [NSString stringWithFormat:@"%lX", [DestField integerValue]];
SourceChoice = [NSString stringWithFormat:@"%lX", [SourceField integerValue]];

因此,用户以十进制值写入源/目标,但它们以十六进制存储在字符串中,然后我有一个按钮可以重新格式化源和目标,如下所示:

NSString * CommandReadyToSend  = [NSString stringWithFormat:@"X:0/%@,%@\r", DestChoice, SourceChoice];

我的代码正在工作,但是,奇怪的是,某些值在 CommandReadyToSend 部分产生了 EXC_BAD_ACCESS ... 示例:如果我在我的文本字段中写 1 => 我在 DestChoice 中收到 1(十六进制值)如果我在我的文本中写 10 field => 我在 DestChoice 中收到 A

但是如果我在文本字段中写 31,我应该得到 1F,但我得到一个 EXC_BAD_ACCESS... 与 29 相同(十进制值)

似乎某些十六进制值无法重新格式化为字符串,我不明白......

4

1 回答 1

2

似乎对我有用,原因一定在别处。

    NSString *destChoice = [NSString stringWithFormat:@"%lX", 1];
    NSString *sourceChoice = [NSString stringWithFormat:@"%lX", 31];
    NSString *commandReadyToSend  = [NSString stringWithFormat:@"X:0/%@,%@\r", destChoice, sourceChoice];
    NSLog(@"%@", commandReadyToSend);

2012-05-10 13:56:29.092 test[9383:707] X:0/1,1F

-

顺便提一句; 如果DestField是 aUITextField那么你应该使用[DestField.text integerValue];- 这是你的问题的可能性。

于 2012-05-10T12:57:42.320 回答