2009-12-27 4 views

Répondre

1

Vous pouvez mapper chaque demi-octet de la chaîne d'origine, en prenant sa valeur numérique et la compensation de « A »:

encoded_name = ''.join([chr((ord(c)>>4) + ord('A')) 
         + chr((ord(c)&0xF) + ord('A')) for c in original_name]) 
+0

+1 pour les deuxièmes solutions, pourquoi même présenter le premier? – joshperry

+0

Deuxième fonctionne parfaitement. Merci Blair! – helpmenet

+0

@joshperry, j'ai présenté le premier parce qu'il était facile à comprendre (et facile à écrire pendant que mon cerveau travaillait sur le second). Étant donné que vous et @ helpmenet soutenez la deuxième solution «plus intelligente», je l'ai supprimée. –

0

Jetez un oeil à RFC 1001, qui définit l'encodage. Dans la section 14.1 "FIRST LEVEL ENCODING" est l'algorithme pour le codage, que vous pouvez implémenter directement en Python.

+0

C'est exactement la même chose que la liaison MS! – helpmenet