2012-02-05 2 views
3

У меня есть один скрипт python, который я пытаюсь преобразовать и застрять в одном месте и не могу продолжить. Пожалуйста, проверьте, где бы я ни упоминал «Застрял здесь» в нижнем коде. любая помощь будет оцененачтение некоторых цифр из двоичных данных

Оригинал Python скрипт:

import hashlib 
meid = raw_input("Enter an MEID: ").upper() 
s = hashlib.sha1(meid.decode('hex')) 
#decode the hex MEID (convert it to binary!) 
pesn = "80" + s.hexdigest()[-6:].upper() 
#put the last 6 digits of the hash after 80 
print "pESN: " + pesn 

Мой C# преобразование:

UInt64 EsnDec = 2161133276; 
string EsnHex=string.Format("{0:x}", EsnDec); 
string m = Convert.ToString(Convert.ToUInt32(EsnHex, 16), 2); 
/*--------------------------------------------- 
Stuck here. Now m got complete binary data 
and i need to take last 6 digits as per python 
script and prefix "80". 
---------------------------------------------*/ 
Console.WriteLine(m); 
Console.Read(); 
+1

[m.Substring, кажется, правильный выбор.] (Http://msdn.microsoft.com/en-us/library/system.string.substring.aspx) – user7116

+0

Согласовано. Чтобы взять последние 'n' цифры строки' s', вы можете использовать: 's.Substring (s.Length - n)'. – Douglas

ответ

1

Как о чем-то вроде этого:

static void Main(string[] args) 
{ 
    UInt64 EsnDec = 2161133276; 
    Console.WriteLine(EsnDec); 
    //Convert to String 
    string Esn = EsnDec.ToString(); 
    Esn = "80" + Esn.Substring(Esn.Length - 6); 
    //Convert back to UInt64 
    EsnDec = Convert.ToUInt64(Esn); 
    Console.WriteLine(EsnDec); 
    Console.ReadKey(); 
} 
+0

Последние 6 десятичных символов будут последними 20 бит. Я думаю, что OP хочет последние 6 бит; который составляет ~ 1,5 дес. символов. – user7116

Смежные вопросы