Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

C# Десятичное число в шестнадцатиричное

19K
25 января 2010 года
WantToProg
63 / / 19.01.2009
Наверно тупой вопрос, но реально не знаю как сделать.
Есть число десятичное 13420149, если использовать калькулятор windows, то это число ССС675. Как мне из десятичного числа, программным методом получить массив типа:
 
Код:
byte[] data = {0x75, 0xC6, 0xCC}

Для передачи в дальнейшую функцию
8.2K
25 января 2010 года
bagie2
299 / / 26.10.2008
BitConverter.GetBytes ?
12K
25 января 2010 года
Ghox
297 / / 26.07.2009
http://msdn.microsoft.com/en-us/library/de8fssa4.aspx:

 
Код:
// Convert an int argument to a byte array and display it.
    public static void GetBytesInt32( int argument )
    {
        byte[ ] byteArray = BitConverter.GetBytes( argument );
        Console.WriteLine( formatter, argument,
            BitConverter.ToString( byteArray ) );
    }
19K
25 января 2010 года
WantToProg
63 / / 19.01.2009
Цитата: bagie2
BitConverter.GetBytes ?



Как бы не очень понятно. Попытаюсь включить моск :)

 
Код:
int a = 13420149;
byte[] data = BitConverter.GetBytes(a);

получаю следующее: byte[0]=117;byte[1]=198;byte[2]=204;byte[3]=0;
да, оно соответствует, но хотелось бы в шестнадцатиричном виде.

Хотя за это уже спасибо. Осталось понять, как объединить этот массив, с другим массивом :) Но это уже другой вопрос.
8.2K
25 января 2010 года
bagie2
299 / / 26.10.2008
в шестнадцатиричном виде значит в строке. выше уже написали. почти повторю

 
Код:
int a = 13420149;
            byte[] data = BitConverter.GetBytes(a);
            Array.Reverse(data);
            string hex = BitConverter.ToString(data).TrimStart(new char[] { '0', '-' });
            MessageBox.Show(hex);
5
25 января 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: WantToProg
хотелось бы в шестнадцатиричном виде

int, byte, long - это числа в памяти компьютера. А числа в ней находятся исключительно в двоичной системе счисления. Всяческие десятичные и шестнадцатеричные представления получаются путем конвертирования этого числа в строку и отображения её на экране. Включите мозг.

36K
26 января 2010 года
sstorm
55 / / 25.03.2009
printf("%x", num);
напечатает num в 16ричной системе
5
26 января 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: sstorm
printf("%x", num);
напечатает num в 16ричной системе


Это наверно в каком-то другом языке, отличном от C#.

 
Код:
int x = 145;
string hex1 = x.ToString("X");
string hex2 = string.Format("0x{0:X}");
Console.WriteLine("0x{0:X}", x);
36K
26 января 2010 года
sstorm
55 / / 25.03.2009
Ой, да. Невнимательно посмотрел на заголовок и думал, что С
19K
29 января 2010 года
WantToProg
63 / / 19.01.2009
Цитата: hardcase
Это наверно в каком-то другом языке, отличном от C#.
 
Код:
int x = 145;
string hex1 = x.ToString("X");
string hex2 = string.Format("0x{0:X}");
Console.WriteLine("0x{0:X}", x);



Тут спасибо за помощь. Я еще хочу уточнить один момент.
Получаю я строку:

DST_ADDRESS = "3456";

раскладываю ее таким образом:
string DST_ADD_LF = DST_ADDRESS.Substring(0, 2);
string DST_ADD_RT = DST_ADDRESS.Substring(2);

результат у меня
DST_ADD_LF = "34"
DST_ADD_RT = "56"

А теперь мне нужно представить это в шестнадцатиричном виде:
byte dal = 0x34;
byte dar = 0x56;

Думал сделать таким образом:

 
Код:
string hex = "0x";
string DST_ADD_LF = hex + DST_ADDRESS.Substring(0, 2);
string DST_ADD_RT = hex + DST_ADDRESS.Substring(2);
int D_A_L = Convert.ToInt32(DST_ADD_LF); //тут я получаю сообщение о некорректном формате строки.
int D_A_R = Convert.ToInt32(DST_ADD_RT);// тут в принципе тоже самое

Как это сделать я не понимаю пока что.

В кратце поясню суть. Пользователь записывает значение DST_ADDRESS, в форме (textbox). А я получив это значение должен преобразовать его для дальнейшей обработки в цифровом формате шестнадцатиричной строкой.
Вообще, как написал hardcase выше, представление не суть. Главное, то, что пользователь пишет строку, а я должен понимать, что это строка, есть шестнадцатиричное значение и соотвественно преобразовать его.
253
29 января 2010 года
Proger_XP
1.5K / / 07.08.2004
 
Код:
iInt = Convert.ToInt32(sHexString, 16);
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог