C#: из десятичной в шестнадцатеричную С.И

Рейтинг: 2Ответов: 2Опубликовано: 15.04.2015

Добрый день!

Имеется строка чисел: 1400001111111111 (всего 16 символов) - десятичная система. Пытаюсь в конвертировать в шестнадцатеричную:

    //variant 1
    return string.Join(".", PIN_block_encr.Select(c => ((int)c).ToString("X2")));
    //variant 2
    var a = Encoding.ASCII.GetBytes(PIN_block_encr);
    var c = BitConverter.ToString(a);

(пример кода) Результат всех способов что я опробовал аналогичен - "

31.34.30.30.30.30.31.31.31.31.31.31.31.31.31.31

" Я решил проверить с помощью с помощью онлайн-переводчика (10=>16) этот, например, и он мне выдал в моем случае совсем другое :

4F94B28E9B5C7

Разница очевидна. Причем я больше склоняюсь ко 2-ому варианту.

Подскажите, пожалуйста, как можно его реализовать на c#. Спасибо.

Ответы

▲ 4Принят

Для начала, получите число:

var n = long.Parse("1400001111111111");

За тем выводите:

var hexstr = n.ToString("X");

long вместо int нужен потому, что ваше число в int не помещается.

Результат: 4F94B28E9B5C7.

▲ 3
    UInt64 val = 1400001111111111;
    Console.WriteLine(val.ToString("X"));  // C  ~ possibly single-digit output 
    Console.WriteLine(val.ToString("X2")); // 0C ~ allways double-digit output