23.06.2017, 13:20 [+3 UTC]
в нашей команде: 2 036 чел. | участники онлайн: 5 (рекорд: 21)

:: РЕГИСТРАЦИЯ

:: консультации

:: задать вопрос

:: все разделы

:: правила

:: новости

:: участники

:: доска почёта

:: форум

:: блоги

:: поиск

:: статистика

:: наш журнал

:: наши встречи

:: наша галерея

:: отзывы о нас

:: поддержка

:: руководство

Версия системы:
7.41 (25.02.2017)

Общие новости:
23.02.2017, 09:51

Форум:
20.06.2017, 09:08

Последний вопрос:
22.06.2017, 20:26

Последний ответ:
23.06.2017, 07:02

Последняя рассылка:
23.06.2017, 09:15

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
16.09.2009, 22:34 »
delmar
Desperate, спасибо за ваш отклик. Ваш вариант сборки будет стоить около 36.000 руб. По сравнению с вариантом vvl дороже почти на 13 тысяч. То есть дороже на 50 % Действительно ли ваш компьютер будет производителен настолько же по сравнению с его вариантом? И стоит ли переплачивать столько? С интересом послушал бы ваше мнение и других экспертов. [вопрос № 172215, ответ № 254270]

РАЗДЕЛ • С / С++

Создание программ на языках C и C++.

[администратор рассылки: Андрей Кузнецов aka Dr_Andrew (Старший модератор)]

Лучшие эксперты в этом разделе

Лысков Игорь Витальевич
Статус: Старший модератор
Рейтинг: 184
mklokov
Статус: 6-й класс
Рейтинг: 168
Коцюрбенко Алексей aka Жерар
Статус: Мастер-Эксперт
Рейтинг: 126

Перейти к консультации №:
 

Консультация онлайн # 190410
Раздел: • С / С++
Автор вопроса: solowey (5-й класс)
Отправлена: 11.01.2017, 18:23
Поступило ответов: 1

Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос:

Вопрос в следующем. Необходимо передавать в шестнадцатеричной системе значения в формате - 0х20. Значения получаю в десятичных. Можно как то переконвертировать формат для шестнадцатеричной системы?

Состояние: Консультация закрыта

Ответ # 274545 от Лысков Игорь Витальевич (Старший модератор)

Здравствуйте, solowey!
Пара вариантов:
1) Сформировать строку, которую потом передать:

char hex(char ch)
{
	ch &= 0x0f;
	if (ch < 0x0a)
		return (ch + '0');
	else
		return (ch - 0x0a + 'A');
}

int main()
{
	char ch = 'z';
	char str[5];
	str[0] = '0';
	str[1] = 'x';
	str[2] = hex(ch>>4);
	str[3] = hex(ch);
	str[4] = 0;
}

2) Строку не формировать, а передавать посимвольно:
char hex(char ch)
{
   ch &= 0x0f;
   if (ch < 0x0a)
      return (ch + '0');
   else
      return (ch - 0x0a + 'A');
}
int main()
{
   char ch = 'z';
   Send('0');
   Send('x');
   Send(hex(ch>>4));
   Send(hex(ch));
}
Где Send - функция, которая передает один байт в канал


Консультировал: Лысков Игорь Витальевич (Старший модератор)
Дата отправки: 16.01.2017, 11:38

5
нет комментария
-----
Дата оценки: 16.01.2017, 12:04

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 190410

solowey
5-й класс

ID: 400484

# 1

= общий = | 11.01.2017, 18:34 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Забыл написать язык программирования Си. Желательно без использования сторонних библиотек. Код под микроконтроллер...

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 2

= общий = | 11.01.2017, 18:38 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
solowey:

Хотя бы так:

	char ch = 4;
	char str[8];
	sprintf(str, "0x%.2x", ch);

=====
Каждый выбирает по себе -
Щит и латы, посох и заплаты.
Меру окончательной расплаты
Каждый выбирает для себя.

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 3

= общий = | 11.01.2017, 18:44 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
solowey:

О! Контроллеры! Наши люди! smile
Тогда лучше так:

char *hex = "0123456789ABCDEF";
int main()
{
	char ch = 4;
	char str[4];
	str[0] = '0';
	str[1] = 'x';
	str[2] = hex[ch>>4];
	str[3] = hex[ch&0x0f];
}

=====
Каждый выбирает по себе -
Щит и латы, посох и заплаты.
Меру окончательной расплаты
Каждый выбирает для себя.

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 4

= общий = | 11.01.2017, 18:58 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
solowey:

Какие контроллеры-то? smile
Лично я работаю в основном на AVR, правда, исключительно, на асме smile

=====
Каждый выбирает по себе -
Щит и латы, посох и заплаты.
Меру окончательной расплаты
Каждый выбирает для себя.

solowey
5-й класс

ID: 400484

# 5

= общий = | 11.01.2017, 19:03 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

в общем так можно. Но хотелось бы как-то так:

int iHex = 0x20;
int iDec = 2;

SetValue(iHex); // правильно
SetValue(iDec); // не совсем правильно...
SetValue(Convert(iDec)); // так будет правильно

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 6

= общий = | 11.01.2017, 19:20 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
solowey:

Чем отличается записи?
int iHex = 0x20;
int iDec = 2;
Да ничем! И то, и то - числа!
Первое равно и 32, и 0x20
Второе равно и 2, и 0x02
Числа будут отличаться только при выводе, передаче, интерпретации!
Если надо передать числе в виде hex-строки, то эту строку надо сформировать и передать.
Еще один вариант:

char hex(char ch)
{
	ch &= 0x0f;
	if (ch < 0x0a)
		return (ch + '0');
	else
		return (ch - 0x0a + 'A');
}

int main()
{
	char ch = 'z';
	char str[5];
	str[0] = '0';
	str[1] = 'x';
	str[2] = hex(ch>>4);
	str[3] = hex(ch);
	str[4] = 0;
}

=====
Каждый выбирает по себе -
Щит и латы, посох и заплаты.
Меру окончательной расплаты
Каждый выбирает для себя.

solowey
5-й класс

ID: 400484

# 7

= общий = | 12.01.2017, 10:16 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата: Лысков Игорь Витальевич
solowey:
Какие контроллеры-то?
Лично я работаю в основном на AVR, правда, исключительно, на асме

На stm32.

В общем я так и думал. Все же хотел проверить свои знания... спасибо.

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 8

= общий = | 12.01.2017, 11:28 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
solowey:

На stm32 тоже писал. Хорошая вещь. В некоторых случаях просто незаменим.
Еще один вариант:

char hex(char ch)
{
   ch &= 0x0f;
   if (ch < 0x0a)
      return (ch + '0');
   else
      return (ch - 0x0a + 'A');
}
int main()
{
   char ch = 'z';
   Send('0');
   Send('x');
   Send(hex(ch>>4));
   Send(hex(ch));
}
Где Send - функция, которая передает один байт в канал

=====
Каждый выбирает по себе -
Щит и латы, посох и заплаты.
Меру окончательной расплаты
Каждый выбирает для себя.

Андрей Кузнецов aka Dr_Andrew
Старший модератор

ID: 17042

# 9

= общий = | 15.01.2017, 21:02 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Лысков Игорь Витальевич:

Игорь Витальевич, оформите ответ?

=====
We have but faith: we cannot know;
For knowledge is of things we see;
And yet we trust it comes from thee,
A beam in darkness: let it grow.
-----
https://www.linkedin.com/in/andreynkuznetsov
https://www.researchgate.net/profile/Andrey_Kuznetsov11
http://www.researcherid.com/rid/K-8824-2014

 

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.15053 сек.

© 2001-2017, Портал RFPRO.RU, Россия
Авторское право: ООО "Мастер-Эксперт Про"
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.41 от 25.02.2017
Бесплатные консультации онлайн