views:

98

answers:

2

Hi alls,

I would like to encode "ITSATEST" to it's netbios name value in python; The occurence table and explication are here: http://support.microsoft.com/kb/194203

I dont know how this could be done easily in python, someone can give me a hand ?

Thanks !

+1  A: 

You can map each nibble of the original string, taking its numerical value and offsetting from 'A':

encoded_name = ''.join([chr((ord(c)>>4) + ord('A'))
                        + chr((ord(c)&0xF) + ord('A')) for c in original_name])
Blair Conrad
+1 for the second solutions, why even present the first?
joshperry
Second works perfectly. Thanks Blair !
helpmenet
@joshperry, I presented the first one because it was easy to understand (and easy to write up while my brain was working on the second). Given your and @helpmenet's support of the "smarter" second solution, I've removed it.
Blair Conrad
A: 

Take a look at RFC 1001, which defines the encoding. In section 14.1 "FIRST LEVEL ENCODING" is the algorithm for the encoding, which you could implement directly in Python.

Jim Garrison
It's exactly the same thing as the MS link !
helpmenet