2014-12-21 4 views
0

Я программирую в C# и пытаюсь преобразовать вход консоли в Hex. ввода является число между 1-256 (бывший 125.) Преобразованный номер должен выглядеть следующим образом:Конвертировать вход ASCII Console в Hex

fpr 125: 0x31, 0x32, 0x35 

Я уже пытался решить мою проблему в течение нескольких часов с помощью:

byte[] array = Encoding.ASCII.GetBytes(Senke) 

но он всегда показывает мне byte[].

Мне нужно это преобразование для создания APDU для записи информации на моем смарт-карты с помощью моего SmartCard приложения окончательный APDU будет выглядеть следующим образом:

{ 0xFF, 0xD6, 0x00, 0x02, 0x10, 0x31, 0x32, 0x35} 

Я надеюсь, что кто-то может помочь мне с этим.

+0

Я отредактировал свой ответ, если это поможет. – Eric

ответ

0

Для преобразования целого числа в шестнадцатеричной используйте: (более подробную информацию можно найти here)

int devValue = 211; 
string hexValue = decValue.ToString("X"); 

Для дальнейшей разработки, следующий будет производить желаемый результат:

string input = "125"; // your input, could be replaced with Console.ReadLine() 

foreach (char c in input) { 
    int decValue = (int)c; // Convert ASCII character to an integer 
    string hexValue = decValue.ToString("X"); // Convert the integer to hex value 

    Console.WriteLine(hexValue); 
} 

кодекс будет производить следующий результат:

31 
32 
35 
+0

Благодарю вас, теперь я получаю вывод без 0x и мне нужен он для этой функции, мне нужно для каждого числа байта как переменную, например a = 0x31, b = 0x32, c = 0,35 для использования он в этом байте APDU [] WriteAPDU = {0xFF, 0xD6, 0x00, 0x02, 0x10, 0x31, 0x32, 0x35} – Matt

0

Приведен пример:

int d = 65; // Capital 'A' 

string h= d.ToString("X"); // to hex 
int d2 = int.Parse(h, System.Globalization.NumberStyles.HexNumber); //to ASCII