0

文字列「123124125」があるとしましょう。文字列から 3 文字ごとに取り出して整数配列に格納したいと考えています。

例えば、

int[0] = 123,
int[1] = 124,
int[2] = 125,

以下の文字列暗号文は「123124125」です。

String ^ ciphertext;
int length1 = ciphertext-> Length;
int count = 0;
int count1 = 0;

while (count < length1)
{
    number[count1] = (ciphertext[count] * 100) + (ciphertext[count+1] * 10) + ciphertext[count+2]);
    count = count + 3;
    count1++;
}

上記は私が書いたコードです。結果は 内で 123 になるはずですnumber[]が、そうではありません。

100倍するときciphertext[count]は100倍に「1」を使わず、10進数です。したがって、10 進数の「1」は「50」なので、結果は「5000」になりますが、100 ではありません。

私の問題は、それらを 3 つずつ int[] に追加するにはどうすればよいですか? 小数を使用せずに 1 をそのまま使用するにはどうすればよいですか?

私の悪い英語でごめんなさい。よろしくお願いします。

4

3 に答える 3

1

ciphertext[count] -'0'文字の int 値を取得するために使用します。

整数に変換する部分文字列に対して atoi 関数を使用することもできます。

于 2013-05-20T17:31:28.487 に答える
1

他の人があなたの誤りを指摘しました。あと、こうしたらどうですか?

string str = "123124125"; 

int i = str.Length / 3;

int[] number = new int[i];

while(--i>=0) number[i] = int.Parse(str.Substring(i*3,3));
于 2013-05-20T17:52:17.113 に答える
0

編集。私は 9 - ('9' - char) を提案しましたが、gkovacs90 が彼の回答で示唆しているように、char - '0' はそれを書くためのより良い方法です。

その理由はciphertext[count]、文字であるため、int にキャストすると、整数ではなくその文字の ASCII コードが得られるためです。次のようなことができますciphertext[count]) -'0'

たとえば、としましょうciphertext[count] is '1'。文字の ascii 値1は 49 です ( http://www.asciitable.com/を参照)。したがって、そうする場合はciphertext[count]*1004900になります。

しかし、ciphertext[count] -'0'そうすると、49 - 48 == 1 になります。

そう...

String ciphertext;
int length1 = ciphertext-> Length;
int count = 0;
int count1 = 0;

while (count < length1)
{
    number[count1] = 
        ((ciphertext[count] -'0') * 100) + 
        ((ciphertext[count+1] - '0') * 10) + 
        (ciphertext[count+2] - '0');
    count = count + 3;
    count1++;
}
于 2013-05-20T17:30:37.350 に答える