Aide traduction C# ou ActionScript en Objective-c

tomactomac Membre
23:29 modifié dans API AppKit #1
Bonjour,
J'ai besoins de votre aide pour traduire un code C# ou ActionScript en Objective-c car un ami ma donnée son code mais voilà  je ne le comprend pas :
En C# :
public string CryptMap(string key)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  string _loc3 = &quot;&quot;;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  int _loc4 = 0;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  for (_loc4 = 0; _loc4 &lt; key.Length; _loc4 += 2)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  _loc3 = _loc3 + Convert.ToChar(Int32.Parse(key.Substring(_loc4, 2), System.Globalization.NumberStyles.HexNumber));<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  } // end while<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  _loc3 = Uri.UnescapeDataString(_loc3);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  return _loc3;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  }

En ActionScript :
&nbsp;  }).prepareKey = function (d)<br />&nbsp;  {<br />&nbsp; &nbsp; &nbsp;  var _loc3 = new String();<br />&nbsp; &nbsp; &nbsp;  var _loc4 = 0;<br />&nbsp; &nbsp; &nbsp;  <br />&nbsp; &nbsp; &nbsp;  while (_loc4 = _loc4 + 2, _loc4 &lt; d.length)<br />&nbsp; &nbsp; &nbsp;  {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  _loc3 = _loc3 + String.fromCharCode(_global.parseInt(d.substr(_loc4, 2), 16));<br />&nbsp; &nbsp; &nbsp;  } // end while<br />&nbsp; &nbsp; &nbsp;  _loc3 = _global.unescape(_loc3);<br />&nbsp; &nbsp; &nbsp;  return (_loc3);<br />&nbsp;  };


Merci d'avance

Réponses

  • schlumschlum Membre
    23:29 modifié #2
    Transcrire un code sans comprendre ce qu'il fait, c'est le meilleur moyen de faire n'importe quoi... Donc comprends l'algorithme et explique le nous en bon français, parce que là ...
  • tomactomac Membre
    23:29 modifié #3
    En faite on a une clé de base, dans le code C# elle se nomme "key"
    et elle est crypté et ce code est censé la décrypté.
    Les 2 lignes que je ne comprend pas sont :
    _loc3 = _loc3 + Convert.ToChar(Int32.Parse(key.Substring(_loc4, 2), System.Globalization.NumberStyles.HexNumber));
    

    et
    &nbsp; _loc3 = Uri.UnescapeDataString(_loc3);
    


    Après je n'en sais pas plus mais je vais demander plus d'information à  mon pote mais il est rarement disponible.
  • psychoh13psychoh13 Mothership Developer Membre
    23:29 modifié #4
    Ce que je comprends dans ce code c'est:
    • On passe en paramètre une chaà®ne de caractères contenant des nombres sous forme hexadécimale, du genre "426F6E6A6F7572"
    • On parse les valeurs numériques correspondantes : 66, 111, 110, 106, 111, 117 et 114
    • On converti ces valeurs numériques en caractères ASCII: 'B', 'o', 'n', 'j', 'o', 'u' et 'r'
    • Pour finir, on insère ces caractères dans une chaà®ne et on obtient "Bonjour".


    C'est assez simple à  réaliser en ObjC/Cocoa.
  • psychoh13psychoh13 Mothership Developer Membre
    23:29 modifié #5
    NSString *convertHexStringToAscii(NSString *in)<br />{<br />&nbsp; &nbsp; <br />&nbsp; &nbsp; NSUInteger length = [in length];<br />&nbsp; &nbsp; char *result = calloc(length / 2 + 1, 1);<br />&nbsp; &nbsp; <br />&nbsp; &nbsp; for(NSRange substr = NSMakeRange(0, 2); substr.location &lt; length; substr.location += 2)<br />&nbsp; &nbsp; {<br />&nbsp; &nbsp; &nbsp; &nbsp; NSScanner *scan = [[NSScanner alloc] initWithString:[in substringWithRange:substr]];<br />&nbsp; &nbsp; &nbsp; &nbsp; unsigned val;<br />&nbsp; &nbsp; &nbsp; &nbsp; if([scan scanHexInt:&amp;val]) result[substr.location / 2] = val;<br />&nbsp; &nbsp; &nbsp; &nbsp; [scan release];<br />&nbsp; &nbsp; }<br />&nbsp; &nbsp; <br />&nbsp; &nbsp; NSString *ret = [NSString stringWithUTF8String:result];<br />&nbsp; &nbsp; <br />&nbsp; &nbsp; free(result);<br />&nbsp; &nbsp; return ret;<br />}
    
Connectez-vous ou Inscrivez-vous pour répondre.