![]() |
|
Модераторы: bsa |
![]()
|
|
| TheDestroyer |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 5.11.2007 Репутация: нет Всего: нет |
Здравствуйте. Подскажите пожалуйста как получить hex значение из string. Мне надо отослать последовательность байт в hex, но получается, что они преобразовываются в ASCII:
Вообще должен быть способ намного проще сформировать data. Это сообщение отредактировал(а) TheDestroyer - 7.6.2009, 23:10 |
|||
|
||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
любое значение хранится в памяти в бинарном виде, и может быть представлено и как hex и как dec и как символ:
покажите из чего и что Вы хотите получить, без лишних деталей, а то и себя запутаете и остальных. |
||||
|
|||||
| TheDestroyer |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 5.11.2007 Репутация: нет Всего: нет |
Да, точно, пример-то не привел...
Код должен был выглядеть так:
В итоге получается в data = p_id_s+'\0'+com_s+'\0'+string1+'\0'+string2+'\0'; строка 31 0 33 0 73 74 72 69 6E 67 31 0 0 вместо 01 0 03 0 73 74 72 69 6E 67 31 0 0 также и с длиной: size_s = d, надо записать это d одним байтом не в ASCII d=64h, а 0d в итоге выходит после data = size_s+'\0'+data; в data содержится : 64 0 31 0 33 0 73 74 72 69 6E 67 31 0 0 вместо 0d 0 01 0 03 0 73 74 72 69 6E 67 31 0 0 Подскажите как из int и строк правильно получить, видимо, char для моего случая? |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
ну написано же было :
как я понял : у Вас есть массив char data[100]; и к примеру int size= 0xde; Вам нужно чтоб первый (с индексом 0) байт у data был 0xde ? если значение в size помещается в байте, то data[0] = size; |
|||
|
||||
| TheDestroyer |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 5.11.2007 Репутация: нет Всего: нет |
Спасибо,
детали привел, т.к. наверняка есть более простой способ сформировать такую последовательность. Возникла следующая проблема: составляю пакет для передачи, не знаю как правильно вписать в массив data строку неизвестной длины, делаю так:
Как правильно сформировать такой массив? |
|||
|
||||
| TheDestroyer |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 5.11.2007 Репутация: нет Всего: нет |
Решил проблему с добавлением строки произвольной длинны с помощью функции strcat
UPD: Не совсем решил,т.к. после использования этой функции затирается все то, что было добавлено в массив ранее. Неужели другого выхода как перебирать все элементы в цикле и вставлять их в массив data нет? Это сообщение отредактировал(а) TheDestroyer - 9.6.2009, 12:21 |
|||
|
||||
| xvr |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
|
||||
|
|||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 10 Всего: 33 |
xvr, Думаю стОит дополнить.
Далее работаете с р вместо data_h. -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| TheDestroyer |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 5.11.2007 Репутация: нет Всего: нет |
Спасибо, сформировал так:
при передаче требуется указать число байт для отправки, просто подсчитать число байт в data_h не правильно (т.е. strlen и sizeof возвращают неверный результат).
Необходимо указать число байт, записанных в data_h. В приведенном коде считаю их вручную (send_size). Может есть другой способ? |
||||
|
|||||
| xvr |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Есть. Сделать указатель записи и функцию stpcpy (кое где она есть по умолчанию)
Далее так
|
||||
|
|||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 10 Всего: 33 |
xvr, Ух ты
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| TheDestroyer |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 5.11.2007 Репутация: нет Всего: нет |
Да, отлично, спасибо!
|
|||
|
||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 2 Всего: 26 |
Тут не мешало-бы сделать проверку на send_size>100 -------------------- ????? ??, ??????? ?????. |
|||
|
||||
| xvr |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Это не мешало бы сделать еще на этапе *p++= .... Но тут без какой нибудь обвертки не обойтись. (В виде класса, или на худой конец дефайна) Но это уже топикстартер пусть сам реализует |
||||
|
|||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |