2015-02-13 2 views
-2

Это небольшой фрагмент кода, который я написал в Visual Studio. Мне нужно преобразовать int add в шестнадцатеричное значение (позже в строку), поскольку я обращаюсь к памяти uC. Но когда я просматриваю переменную во время отладки, она отображает ее как строку «add16». Что я могу делать неправильно?C# преобразование int в hex

for (int add = 0; add <= 0xfffff;) 
{ 
    for (int X = 0; X <= 15; X++) 
    { 
     string address = add.ToString("add16"); 
     addr = Convert.ToString(address); 
     port.WriteLine(String.Format("WRBK:{0}:{1}", addr, parts[X])); 
     add++; 
    } 
} 
+0

Других ответов здесь все будет работать, но я хотел бы предложить просматривал [числовой формат строки] (https://msdn.microsoft.com/en-us/library/dwhawy9k%28v=vs.110%29.aspx#XFormatString), чтобы понять, почему ваш способ не работает. Вы можете использовать 'ToString()', чтобы получить шестнадцатеричную строку из int, но вы должны передать строку правильного формата, например. 'Add.ToString ("Х")'. –

+0

Я хотел бы указать, что вы не можете «преобразовать int в hex», вы можете преобразовать его только в шестнадцатеричную строку. –

ответ

2

Существует простой и очень удобный метод, который принимает целое число и возвращает ее представление в виде строки в шестнадцатеричном виде

string address = Convert.ToString(add, 16); 

Так что, возможно, ваш внутренний цикл может быть переписан в виде

port.WriteLine(String.Format("WRBK:{0}:{1}", Convert.ToString(add++, 16), parts[X])); 

и используя standard numeric format strings specifiers сводится к

port.WriteLine(String.Format("WRBK:{0:X}:{1}", add++, parts[X])); 
+0

Работал как шарм. Спасибо. –

2

Вы можете сказать, .NET-х String.Format использовать шестигранный выход для целого числа, что исключает какой-либо код для преобразования шестнадцатеричного, использование:

port.WriteLine(String.Format("WRBK:{0:X}:{1}", add, parts[X])); 
Смежные вопросы