2012-05-10 79 views
0

我卡住了。 我給你,我用確切的代碼,而不是一個樣本:EXC_BAD_ACCESS奇怪的十六進制字符串轉換

所以,我做兩個字符串是這樣的:

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

所以用戶編寫源/目標在十進制值,但他們放養十六進制的字符串,然後我有一個按鈕,重新格式化源& DEST這樣的:

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

我的代碼工作,但是,strangly一些值使得EXC_BAD_ACCESS在CommandReadyToSend部分... 例如:如果我在我的文本字段中寫入1 =>我在DestChoice中收到1(十六進制值) 如果我在我的文本字段中寫入10 =>我在DestChoice中收到A

但是如果我在文本字段,我應該得到1F,但我得到一個EXC_BAD_ACCESS ... 同樣的事情與29(dec值)

似乎某些十六進制值不能重新格式化爲字符串,我不明白...

+0

現在無法檢查,但嘗試用%X替換%lX – giorashc

+0

聲明「DestChoice」和「SourceChoice」在哪裏以及如何? –

+0

它們被聲明爲字符串:NSString * DestChoice = @「」; NSString * SourceChoice = @「」; –

回答

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

-

順便說一句;如果DestFieldUITextField那麼你應該使用[DestField.text integerValue]; - 這是你的問題的可能性。

+0

這是NSTextField,所以[DestField integerValue]是好的 –

+0

問題解決了! [DestChoice保留];訣竅! –

相關問題