Конвертировать int32 в строку в базе 16

В настоящее время я пытаюсь конвертировать.NET JSON Encoder в NETMF, но столкнулся с проблемой Convert.ToString() поскольку в NETMF такого нет.

Исходная строка кодировщика выглядит так:

Convert.ToString(codepoint, 16);

И после просмотра документации для Convert.ToString(Int32, Int32) он говорит, что это для преобразования int32 в int 2, 8, 10 или 16, указав int в качестве первого параметра и base в качестве второго.

Каков некоторый низкоуровневый код того, как это сделать или как мне поступить?

Как видно из кода, мне нужно только преобразование из Int32 в Int16,

РЕДАКТИРОВАТЬ

Ах, кодер также затем хочет сделать:

PadLeft(4, '0');

в строке это просто добавление 4 '0' + '0' + '0' + '0' в начало строки?

2 ответа

Если вы имеете в виду, что вы хотите изменить 32-разрядное целочисленное значение в строку, которая показывает значение в шестнадцатеричном формате:

string hex = intValue.ToString("x");

Варианты см. В вопросе переполнения стека. Преобразование числа в шестнадцатеричное значение в.NET.

Отказ от ответственности: я не уверен, существует ли эта функция в NETMF, но она настолько фундаментальна, что, я думаю, должна.

Вот пример кода для преобразования целого числа в шестнадцатеричное (основание 16):

int num = 48764;   // assign your number

// Generate hexadecimal number in reverse.
var sb = new StringBuilder();
do
{
    sb.Append(hexChars[num & 15]);
    num >>= 4;
} 
while (num > 0);

// Pad with leading 0s for a minimum length of 4 characters.
while (sb.Length < 4)
    sb.Append('0');

// Reverse string and get result.
char[] chars = new char[sb.Length];
sb.CopyTo(0, chars, 0, sb.Length);
Array.Reverse(chars);
string result = new string(chars);

PadLeft(4, '0') добавляет начальные 0 к строке, чтобы обеспечить минимальную длину 4 символа.

hexChars поиск значения может быть тривиально определен как строка:

internal static readonly string hexChars = "0123456789ABCDEF";

Изменить: Замена StringBuilder с List<char>:

// Generate hexadecimal number in reverse.
List<char> builder = new List<char>();
do
{
    builder.Add(hexChars[num & 15]);
    num >>= 4;
}
while (num > 0);

// Pad with leading 0s for a minimum length of 4 characters.
while (builder.Count < 4)
    builder.Add('0');

// Reverse string and get result.
char[] chars = new char[builder.Count];
for (int i = 0; i < builder.Count; ++i)
    chars[i] = builder[builder.Count - i - 1];
string result = new string(chars);

Примечание. Сведения об этом преобразовании см. В разделе "Вывод шестнадцатеричного числа" в Expert .NET Micro Framework.

Другие вопросы по тегам