C # конвертировать целые числа в шестнадцатеричные? - PullRequest
0 голосов
/ 23 апреля 2011

Я использую шаблон Cosmos для сборки c # os. Мне нужно написать свой собственный метод, который преобразует значение типа int в шестнадцатеричное значение использования в 2 байта. Я не могу использовать любые встроенные функции (например, ToString("X") или String.Format). Я пытался написать метод, но это не удалось. Какой-нибудь код, идеи, предложения или учебные пособия?

1 Ответ

1 голос
/ 23 апреля 2011

РЕДАКТИРОВАТЬ: Хорошо, теперь мы знаем, что вы работаете в Космосе, у меня есть два предложения.

Во-первых: построй сам:

static readonly string Digits = "0123456789ABCDEF";

static string ToHex(byte b)
{
    char[] chars = new char[2];
    chars[0] = Digits[b / 16];
    chars[1] = Digits[b % 16];
    return new string(chars);
}

Обратите внимание на тип параметра byte, а не int, чтобы сделать его одним байтовым значением, преобразованным в двухсимвольную шестнадцатеричную строку.

Второе: используйте справочную таблицу:

static readonly string[] HexValues = { "00", "01", "02", "03", ... };

static string ToHex(byte b)
{
    return HexValues[b];
}

Конечно, вы можете объединить два подхода, используя первый (относительно медленный) подход для генерации таблицы поиска.

...