| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Как получить hex значение из string? |
| Автор: TheDestroyer 7.6.2009, 23:10 | ||
Здравствуйте. Подскажите пожалуйста как получить hex значение из string. Мне надо отослать последовательность байт в hex, но получается, что они преобразовываются в ASCII:
Вообще должен быть способ намного проще сформировать data. |
| Автор: TheDestroyer 8.6.2009, 00:16 | ||||
| Да, точно, пример-то не привел... Код должен был выглядеть так:
В итоге получается в 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 8.6.2009, 00:38 |
| ну написано же было : как я понял : у Вас есть массив char data[100]; и к примеру int size= 0xde; Вам нужно чтоб первый (с индексом 0) байт у data был 0xde ? если значение в size помещается в байте, то data[0] = size; |
| Автор: TheDestroyer 9.6.2009, 11:53 | ||
| Спасибо, детали привел, т.к. наверняка есть более простой способ сформировать такую последовательность. Возникла следующая проблема: составляю пакет для передачи, не знаю как правильно вписать в массив data строку неизвестной длины, делаю так:
Как правильно сформировать такой массив? |
| Автор: TheDestroyer 9.6.2009, 12:15 |
| Решил проблему с добавлением строки произвольной длинны с помощью функции strcat UPD: Не совсем решил,т.к. после использования этой функции затирается все то, что было добавлено в массив ранее. Неужели другого выхода как перебирать все элементы в цикле и вставлять их в массив data нет? |
| Автор: xvr 9.6.2009, 12:26 | ||||
|
| Автор: andrew_121 9.6.2009, 13:08 |
| xvr, Думаю стОит дополнить. Далее работаете с р вместо data_h. |
| Автор: TheDestroyer 9.6.2009, 13:27 | ||||
Спасибо, сформировал так:
при передаче требуется указать число байт для отправки, просто подсчитать число байт в data_h не правильно (т.е. strlen и sizeof возвращают неверный результат).
Необходимо указать число байт, записанных в data_h. В приведенном коде считаю их вручную (send_size). Может есть другой способ? |
| Автор: xvr 9.6.2009, 13:52 | ||||
Есть. Сделать указатель записи и функцию stpcpy (кое где она есть по умолчанию)
Далее так
|
| Автор: andrew_121 9.6.2009, 14:34 |
| xvr, Ух ты |
| Автор: TheDestroyer 11.6.2009, 12:05 |
| Да, отлично, спасибо! |
| Автор: Andrey44 11.6.2009, 12:18 | ||
Тут не мешало-бы сделать проверку на send_size>100 |
| Автор: xvr 11.6.2009, 13:31 | ||||
Это не мешало бы сделать еще на этапе *p++= .... Но тут без какой нибудь обвертки не обойтись. (В виде класса, или на худой конец дефайна) Но это уже топикстартер пусть сам реализует |