2012-03-29 5 views
2

So zuerst habe ich versucht, Zeichen am Index zu verwenden, dann wandeln Sie es in nsnumber, und dann den Int-Wert, aber für 9 habe ich einen Wert von 57. Also wusste ich, was falsch lief, ich bekomme das Int des Charakters selbst.Wie kann ich den tatsächlichen Wert des Zeichens anstelle des int-Wertes

Also lese ich ein wenig, und fand atoi, aber ich bekomme diesen Fehler, der nicht meine App crasht, just pausiert es.

Mein Code ist: int aktuelle = atoi ([startSquares characterAtIndex: i]);

Jetzt startSquares ist eine große Reihe von Zahlen voll, und diese obige Zeile ist in einem for-Schleife, wo ich auf 0 gehe 99.

+0

Subtrahieren Sie einfach den int-Wert von char '0' – mac

Antwort

3

57 is ASCII for the digit '9'. Unter der Annahme, dass durch den „Wert des char“ Sie bedeuten, „den numerischen Wert an der Stelle der char repräsentiert“, können Sie den einfachen Trick in ASCII verwenden:

int digit = char - '0'; 

Diesen Trick funktioniert, weil alle Ziffern codiert sind in der Reihenfolge beginnend mit der Ziffer Null (ASCII-Code 48). Also, wenn Sie '0' subtrahieren (was eine andere Möglichkeit ist, 48 zu schreiben) von 57, erhalten Sie 9, den Wert der Ziffer '9'.

+0

Was ich meine ist, dass ich möchte, dass der Wert von Strom für die Char '9' 9 sein. –

+0

@PeterP Dies ist Ihre Antwort dann :) Sie müssen 48, oder "0", was das Gleiche ist subtrahieren . – dasblinkenlight

+0

ohhh, -'0 'hat Wert 48, ahhh ich bekomme, was ihr jetzt meint, danke –

0

Dies ist ein schlechtes Design, sollten Sie einen int-Array verwenden, um Ihre zu halten Quadrate.

Aber wenn Sie unbedingt darauf bestehen, mit Ihrem Ansatz zu bleiben, ist dasblinkenlight Weg der Weg zu gehen. Subtrahieren Sie einfach den int-Wert von char '0' von dem Zeichen, das Sie gelesen haben.

+0

Das Problem ist, dass ist wie ein Level, so bekomme ich diese komplizierte Array von verschiedenen Zahlen jedes Mal, also mache ich eine Zeichenfolge und ich möchte den Wert "verwenden" dargestellt an jeder Zahl, um dieses andere Array zu initialisieren, das ich für mein Spiel verwende. –

-1

Wenn Sie ein Zeichen c '9' haben und den numerischen Wert 9 haben möchten, können Sie c - '0' verwenden. Es ist jedoch nicht klar, dass dies das ist, was Sie wollen.

Wenn Sie ein Array von char haben, das eine Reihe von Zahlen (von mehr als einer Ziffer) enthält, müssen Sie einen Zeiger durch dieses Array bewegen, und dann können Sie atoi mit diesem Zeiger aufrufen, wenn es auf a zeigt digit (siehe isdigit), oder Sie könnten sscanf verwenden, oder Sie könnten es in einen NSString einfügen und die nächste Zahl mit intValue abrufen. Aber das würde Ihnen einen NSInteger und keine NSNummer geben. Ich glaube nicht, dass Sie wirklich eine NSNummer wollen, da Sie das Quadrat von einem nicht direkt nehmen können.

+0

Das Tag und der Code zeigen deutlich seine Obj c – Pepe

+0

Dies sind alle einstelligen Zahlen, und ich verwende Atoi und es hält das Spiel an. –

+0

Ja, ich habe bemerkt, dass es kurz nach dem Treffen obj c ist und die Antwort bearbeitet. – DRVic

Verwandte Themen