2 / 2 / 0
Регистрация: 24.10.2013
Сообщений: 129

String IntToHex и синтаксис под Линукс

02.03.2015, 13:14. Показов 1509. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
День добрый.
Мне приходят данные о текущем времени в НЕХ формате, мне надо скорректировать моё текущее время на машине.
Вся беда заключается в том, что ранее я писал на С++ под винду. А сейчас пишу свой первый проект под Linux и не могу разобраться с синтаксисом. Под винду я бы написал так:
C++
1
2
3
4
5
6
char resData[3] = {0x35;0x22;0x12}//Принятые данные 12 часов, 22 минуты 35 секунд
string curr_val;
curr_val = IntToHex(resData[0];2) + IntToHex(resData[1];2) +IntToHex(resData[2];2);//Формируем строку в формате  ССММЧЧ для команды "data"
char command[256];
snprintf(command, 256, "data %d", curr_val);
system(command);
Подскажите пожалуйста как правильно это записать под Linux.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.03.2015, 13:14
Ответы с готовыми решениями:

Игра под Линукс
Привет всем. Нужна помощь: необходимо импортировать некий *.blend файл (со всеми моделями, текстурами и освещением) в код на С++. Алгоритм...

Библиотека под линукс
Здравствуйте. Скажите,пожалуйста, как обычную программу на с++ в qt под linux превратить в библиотеку под linux, разработав к функциям...

Компиляция С++ под линукс в Eclipse
Добрый день. Написал программу на С++ в Eclipse. Библиотеки OpenCV установлены и как статичные, и как динамические (см скриншот)....

4
 Аватар для HighPredator
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
02.03.2015, 13:28
Можно так:
C++
1
2
3
4
char resData[3] = {0x35,0x22,0x12};//Принятые данные 12 часов, 22 минуты 35 секунд
  char temp[7];
  sprintf(temp, "%hhX%hhX%hhX", resData[0], resData[1], resData[2]);
  std::string cur_val(temp);
1
2 / 2 / 0
Регистрация: 24.10.2013
Сообщений: 129
02.03.2015, 13:42  [ТС]
Цитата Сообщение от HighPredator Посмотреть сообщение
Можно так:
C++
1
2
3
4
char resData[3] = {0x35,0x22,0x12};//Принятые данные 12 часов, 22 минуты 35 секунд
  char temp[7];
  sprintf(temp, "%hhX%hhX%hhX", resData[0], resData[1], resData[2]);
  std::string cur_val(temp);
В итоге у меня строка "command" выглядит так "data -1090520296" в место ожидаемого "data 352212".
0
 Аватар для HighPredator
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
02.03.2015, 13:54
Лучший ответ Сообщение было отмечено Maguark как решение

Решение

Maguark, у меня все пучком.

Добавлено через 4 минуты
А, стоп, а кто править код на формирование command будет?

Добавлено через 38 секунд
Можно и вообще без него обойтись

Добавлено через 3 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <string>
 
int main()
{
  char resData[3] = {0x35,0x22,0x12};//Принятые данные 12 часов, 22 минуты 35 секунд
  char temp[7];
  sprintf(temp, "%hhX%hhX%hhX", resData[0], resData[1], resData[2]);
  std::string cur_val("date ");
  cur_val.append(temp);
 
  std::cout<<cur_val<<std::endl;
  system(cur_val.c_str());
  return 0;
}
1
2 / 2 / 0
Регистрация: 24.10.2013
Сообщений: 129
02.03.2015, 15:42  [ТС]
Цитата Сообщение от HighPredator Посмотреть сообщение
Maguark, у меня все пучком.

Добавлено через 4 минуты
А, стоп, а кто править код на формирование command будет?

Добавлено через 38 секунд
Можно и вообще без него обойтись

Добавлено через 3 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <string>
 
int main()
{
  char resData[3] = {0x35,0x22,0x12};//Принятые данные 12 часов, 22 минуты 35 секунд
  char temp[7];
  sprintf(temp, "%hhX%hhX%hhX", resData[0], resData[1], resData[2]);
  std::string cur_val("date ");
  cur_val.append(temp);
 
  std::cout<<cur_val<<std::endl;
  system(cur_val.c_str());
  return 0;
}
По невнимательности не заметил, что вы curr_val заменили как cur_val и подставлял свой старый массив в command=)
поправив cоmmand на
C++
1
snprintf(command, 256, "data %s", cur_val);
компилятор выдает ошибку:
error : cannot pass objects of non-trivially-copyable type 'std::string {aka class std::basic_string<char>}' through '...'
1> snprintf(command, 256, "data %s", cur_val);
Написал ответ, до того как увидел ваше добавление=)
Сейчас попробую. Большое спасибо за помощь.

Добавлено через 27 минут
Последний ваш вариант работает. Большое спасибо.
Единственное что для команды "data" важен формат. А у меня сейчас если одно из значений resData установлено как 0x03 к примеру, то в "temp" оно записывается как просто "3" а нужно 03. Но думаю, я смогу найти как это исправить=)
Еще раз спасибо вам за помощь.
Нашел, пишем вот так и все работает:
C++
1
sprintf(temp, "%02X%02X%02X", resData[0], resData[1], resData[2]);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.03.2015, 15:42
Помогаю со студенческими работами здесь

Работа программы под линукс
Сам пока все ещё докуриваю что и как на линуксе и тут встал вопрос , если программа написаная на С++ под винду то там запуском EXE , а у...

Актуальность программирования под линукс
Добрый день, какие темы на сегодняшний день наиболее востребованы для ОС линукс в рамках &quot;development&quot;? Рассматривается как...

Альтернатива getch() под линукс.
Есть альтернатива getch() под линукс? В виндовс я делал так; int namber = getch(); Это очень удобна, потому что в отличии от cin не...

Системное программирование под Линукс(КДЕ)
1.) Получить следующую системную информацию: • Время в секундах, прошедшее с момента загрузки системы; • Число процессов,...

Графика под линукс, приложение не компилируется
#include &lt;winbgim.h&gt; void func(int *q,int n) { int i; for (i=0;i&lt;n;i++) { moveto(100+10*i,200);


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru