Конвертировать 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.