2009-12-27 2 views
1

Я хотел бы кодировать «ITSATEST» для его значения имени netbios в python; таблица встречаемости и экспликация здесь: http://support.microsoft.com/kb/194203encode Netbios name python

Я не знаю, как это можно легко сделать в Python, кто-то может дать мне руку?

Спасибо!

ответ

1

Вы можете отобразить каждый клев исходной строки, принимая его численное значение и компенсируя от «A»:

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

+1 для вторых решений, почему даже представить первый? – joshperry

+0

Второй работает отлично. Спасибо, Блэр! – helpmenet

+0

@joshperry, я представил первый, потому что это было легко понять (и легко писать, пока мой мозг работал над вторым). Учитывая, что ваша поддержка @ helpmenet для «более умного» второго решения, я удалил его. –

0

Посмотрите на RFC 1001, который определяет кодировку. В разделе 14.1 «FIRST LEVEL ENCODING» - это алгоритм кодирования, который можно реализовать непосредственно в Python.

+0

Это точно так же, как ссылка MS! – helpmenet