2012-04-22 1 views

答えて

1

彼らは個々の文字に簡単にアクセスを提供するように私は、この使用してC文字列を行うことを考えることができます。

これは解決するために、興味深い問題のように思えたので、私はそれを書くことで、外出先に持っていた:

int parseBase36Number(NSString *input) 
{ 
    const char *inputCString = [[input lowercaseString] UTF8String]; 
    size_t inputLength = [input length]; 
    int orderOfMagnitudeMultiplier = 1; 

    int result = 0; 

    // iterate backward through the number 
    for (int i = inputLength - 1; i >= 0; i--) 
    { 
     char inputChar = inputCString[i]; 
     int charNumericValue; 

     if (isdigit(inputChar)) 
     { 
      charNumericValue = inputChar - '0'; 
     } 
     else if (islower(inputChar)) 
     { 
      charNumericValue = inputChar - 'a' + 10; 
     } 
     else 
     { 
      // unhanded character, throw error 
     } 

     result += charNumericValue * orderOfMagnitudeMultiplier; 

     orderOfMagnitudeMultiplier *= 36; 
    } 

    return result; 
} 

注:私は、このすべてをテストし、その世話をし、私はそれが行く方法を知って聞かせていませんでした!

+0

ありがとう、@ Justin808! – joerick

+0

小さな修正の後、これは私がそれに投げなければならないすべてのものと一緒に働いた。 – Justin808

+0

@Paul McCabeの記述通りにstrtolを検討してください。 – Corvusoft

5

のObjective CはCの上に構築され、そして幸運にも十分なあなたはそこに関数を使用することができます変換を達成する。あなたが探しているのはstrtolか、そのうちの1つは兄弟関数です。私が正しくリコールすると、strtolはbase36(あなたが参照するhexa-tri-decimal)まで処理します。

http://www.cplusplus.com/reference/clibrary/cstdlib/strtol/

+0

Ha!ちょっと、Hexa-Tri-Decimalパーサをコーディングしたところ、Cライブラリに入っています。 – joerick

関連する問題