2012-01-05 7 views
-3

私はこのファイルを.netで読み込んでいます。このファイルはコード化されたformat.nowです。私はfile.canをデコードする必要があります。私はC#で、このファイルをデコードする必要がCでファイルの内容をデコードする方法#

マイエンコードされたファイル形式は

DARHnAyyakAALdDALdDALWGALY.AAAEQWAAAHQO 
DARJMAyyakAALshALshALjEALoTAAAEA4AAAKcI 
DARKwAyyakAAL2wAL2wALvkAL0VAAABJIAAAD$O 
DARHnAyyvqAALXCALbkALUYALYXAAAD3MAAAHA6 
DARJMAyyvqAALnXALrRALiwALmgAAAEmsAAAKUK 
DARKwAyyvqAALzeAL3EALtdALxIAAABFYAAAEBC 
DARHnAyzEwAALXlALXlALP7ALU7AAAEpMAAAG5Q 
DARJMAyzEwAALlkALlkALeEALjYAAAGysAAAKTs 

ですが、私はC#でトンを行うことが熱い知っているドンme..iがjava.butのロジックを持っています助けをしなさい。

private void update(String s){ 
int exp = decode(s.substring(1,5)); 
exp += 20000000; 
int dt = decode(s.substring(5,11)); 
int op = decode(s.substring(11,15)); 
int hi = decode(s.substring(15,19)); 
int lo = decode(s.substring(19,23)); 
int cl = decode(s.substring(23,27)); 
int v = decode(s.substring(27,33)); 
int ni = decode(s.substring(33,39)); 
append(""+exp,dt, op/100.0f, hi/100.0f, lo/100.0f, cl/100.0f, v, ni); 
} 

private int decode(String s) 
{ 
int n = 0; 
for (int i = 0; i < s.length(); i++) 
{ 
    int c = (int)s.charAt(i); 
    if (c >= (int)'A' && c <= (int)'Z') 
    c = c - (int)'A'; 
    else if (c >= (int)'a' && c <= (int)'z') 
    c = c - (int)'a' + 26; 
    else if (c >= (int)'0' && c <= (int)'9') 
    c = c - (int)'0' + 52; 
    else if (c == (int)'$') 
    c = 62; 
    else if (c == (int)'.') 
    c = 63; 
    else 
    c = 0; 
    n <<= 6; 
    n += c; 
} 
return n; 
} 
+1

エンコーディングとは何ですか? –

+7

だから、あなたの猫がcapslockを使って歩き回ることを許可することによって、(あなたのような)ファイルが 'エンコードされています'、あなたは猫を出すために 'デコード'したいのですか?それがあなたがしたいことでない場合は、より具体的にしてください。私の精神力は不完全です。 – Dan

+0

エンコーディングまたは暗号化? –

答えて

0

これは、C#にはほとんど直接翻訳:私はわからないのだ

private void update(String s) 
    { 
     int exp = decode(s.Substring(1, 5)); 
     exp += 20000000; 
     int dt = decode(s.Substring(5, 11)); 
     int op = decode(s.Substring(11, 15)); 
     int hi = decode(s.Substring(15, 19)); 
     int lo = decode(s.Substring(19, 23)); 
     int cl = decode(s.Substring(23, 27)); 
     int v = decode(s.Substring(27, 33)); 
     int ni = decode(s.Substring(33, 39)); 
     //append(""+exp,dt, op/100.0f, hi/100.0f, lo/100.0f, cl/100.0f, v, ni); 
    } 

    private int decode(String s) 
    { 
     int n = 0; 
     for (int i = 0; i < s.Length; i++) 
     { 
      int c = (int)s[i]; 
      if (c >= (int)'A' && c <= (int)'Z') 
       c = c - (int)'A'; 
      else if (c >= (int)'a' && c <= (int)'z') 
       c = c - (int)'a' + 26; 
      else if (c >= (int)'0' && c <= (int)'9') 
       c = c - (int)'0' + 52; 
      else if (c == (int)'$') 
       c = 62; 
      else if (c == (int)'.') 
       c = 63; 
      else 
       c = 0; 
      n <<= 6; 
      n += c; 
     } 
     return n; 
    } 

唯一のものは、APPEND文です。数字を一緒に追加するか、文字列を作成するかどうかはわかりません。それは文字列であると仮定すると、

、それはのようになります。

 var sbText = new System.Text.StringBuilder(500); 
     sbText.Append(exp).Append(dt).Append(op/100.0f).Append(hi/100.0f).Append(lo/100.0f).Append(cl/100.0f).Append(v).Append(ni); 
     var sText = sbText.ToString(); 
+0

あなたは自分の入力をどのエンコードに決めましたか? –

+0

まったく考えられません。自国の暗号化のようだ。私はちょうどコードの仕事を作った:)。 –

+0

デコード関数は、いくつかのBase64Encoderの実装で見られるCharToSixBit関数によく似ています。 –

関連する問題