Байтовые переменные моего класса, преобразующие шестнадцатеричное значение в десятичное по умолчанию в c#

#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. НЕТ, на самом деле я хочу, чтобы они были в шестнадцатеричном формате .. но его изменение на десятичное