2016-12-20 5 views
0

Позвольте мне описать сценарий первым.Преобразование десятичной в шестнадцатеричную

То, что я пытаюсь сделать, это преобразовать строку в шестнадцатеричную.

Например, двоичная строка, состоящая из 1s & 0s, а именно: 110011, , объединяя их как группу из 4 цифр (добавьте два 0s для 8 цифр здесь), преобразуя каждую пару в шестнадцатеричный отдельно, а затем соединяя результат шестнадцатеричной строки, чтобы получить результат.

Для восьмеричного, так же как и для двоичного, но здесь входа восьмеричной строки разбивается на группы по 3 цифры

Для ASCII, байты эквивалента каждой цифры преобразуются в шестнадцатеричный и сохраняется.

Теперь проблема в том, что я должен делать для ввода десятичной строки?

-Это следует использовать тот же метод, что и для ASCII? -О, есть ли другой способ?

EDIT: -

Я не просто преобразования чисел, но преобразования массива чисел.

двоичной строка - группы из 4 цифр & затем преобразовать их в шестнадцатеричном
OCTAL струнных - группы из 3 цифр & затем преобразовать их в шестнадцатеричном
ASCII строки - байтовый эквивалент для каждого символа & затем преобразовать его в шестнадцатеричной

Так что длина не является проблемой. Вопрос заключается в том, чтобы преобразовать десятичную строку (какая-то спаривание/группирования следует использовать)

Примечание: Я уже знаю о преобразовании восьмеричной, двоичные & десятичных чисел в шестнадцатеричном формате. Эта часть больше о том, как «делить десятичную строку на группы», чтобы преобразовать каждую десятичную группу в шестнадцатеричный отдельно и затем объединить полученный шестнадцатеричный.

+1

Вы имеете в виду, как это, например? [Преобразование длинной строки двоичного кода в шестнадцатеричный C#] (http://stackoverflow.com/q/5612306/3744182). – dbc

+0

На самом деле это двоичная строка. Как я упоминал выше, проблема состоит в том, чтобы преобразовать десятичную строку в шестнадцатеричный –

+0

Итак, вот так? [Как преобразовать числа между шестнадцатеричным и десятичным в C#?] (Http://stackoverflow.com/questions/74148/how-to-convert-numbers-between-hexadecimal-and-decimal-in-c?rq = 1) – Abion47

ответ

0

Самый простой способ добиться этого - это считать цифры в виде символов ASCII (0-9 имеют значения ASCII 48-57) и преобразовать их в шестнадцатеричный, как вы уже делали.

Если вы хотите сделать это по-другому, вам нужно будет ввести новую логику в свою программу. Это зависит от ваших личных предпочтений.

+0

Похоже на возможное решение, но в этом случае преобразование для ascii и десятичных строк будет таким же. –

+0

Если вы хотите иметь возможность различать int и строку int, вам нужно иметь возможность сказать разницу. Вероятно, вы можете объединить строку ints с помощью doublequotes ( –

+0

Хм, хорошая идея. Аналогично, я мог бы использовать csv и т. Д. Спасибо. –

2

Здесь нет необходимости изобретать велосипед.

string input = "123456"; 
string outputHex = int.Parse(input).ToString("X"); 

// output = "1E240" 

Или еще лучше:

string outputHex = Convert.ToString(int.Parse(input), 16); 

Этот метод позволяет делать другие системы счисления, а также:

string outputOct = Convert.ToString(int.Parse(input), 8); 
string outputBin = Convert.ToString(int.Parse(input), 2); 
Смежные вопросы