#c#
#c#
Вопрос:
Байтовые переменные моего класса, преобразующие шестнадцатеричное значение в десятичное по умолчанию в c # (чего я не хочу)
statusData — это объект моего класса. все переменные типа «byte» ниже преобразуют шестнадцатеричное значение в десятичное по умолчанию
statusData.msgStart = 0x02;
statusData.msgLen = 0x2d;
statusData.msgId = 0xb0;
statusData.dataValidity = 0xfff;
statusData.clusterId = 0;
statusData.lumId = 0;
statusData.msgStop = 0x03;
Комментарии:
1. неясно, о чем вы спрашиваете
2. шестнадцатеричное значение, которое я пытаюсь сохранить в переменной, меняется на десятичное
3. statusData.msgStart вместо сохранения 0x02, сохранение 2.
4. Если вы хотите представить целое число в виде шестнадцатеричного числа, состоящего не менее чем из 2 цифр, используйте
"x2"
format string:statusData.msgStart.ToString("x2");
Ответ №1:
Значение переменной не является ни десятичным, ни шестнадцатеричным. Действительно, внутренне оно хранится в двоичном формате. Но это вам не интересно. Это просто число. Видимое представление создается не раньше, чем вы используете какой-либо метод для его просмотра.
Я думаю, ваша проблема в том, что вы видите десятичное значение в отладчике. Вы можете переключить представление отладчика на шестнадцатеричное, щелкнув правой кнопкой мыши значение в debugger и выбрав «Шестнадцатеричное отображение». Для вывода вы можете использовать что-то вроде
Console.WriteLine("{0:x}", statusData.msgStart);
Ответ №2:
Я не уверен, что понимаю, чего вы хотите достичь, но если вы хотите преобразовать литерал в десятичное число, вы можете использовать что-то вроде Decimal d = Convert.ToDecimal(statusData.msgStart);
, например.
Комментарии:
1. НЕТ, на самом деле я хочу, чтобы они были в шестнадцатеричном формате .. но его изменение на десятичное