![]() |
|
Модераторы: bsa |
![]()
|
|
| Viroman |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 28.7.2008 Репутация: нет Всего: нет |
Здравствуйте, помогите пожалуйста разрешить проблему новичку. И так имеется программа, получаю по ней в комманд стринг
argv[1] с содержанием aa0eb1ff. Теперь этот стринг надо перевести в UCHAR, как тот преобразовывается, если укажешь так UCHAR cmd[6]="\xAA\x0E\xB1\xFF"; То есть это дело надо автоматизировать, перевод стринга в учар, при том длина вариабельна. Помогите пожалуйста! |
|||
|
||||
| Ches |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 19.8.2008 Репутация: нет Всего: 3 |
|
|||
|
||||
| Viroman |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 28.7.2008 Репутация: нет Всего: нет |
Не, это не то, видимо я вопрос некорректно сформулировал. В общем, я специально указал это в таком виде \x . то есть стринг конвертится в свой анси аналог \xAA\x0E\xB1\xFF. Но поскольку это из argv поступает, мне надо то, что поступает в этом виде
aa0eb1ff автоматом перевести в анси формат, то есть чтобы реально был тот знак, который соответствует этому значению. Сейчас я это делаю вот так UCHAR uc; uc=strtoul(argv[1],NULL,16); но так к сожалению работает только для последнего знака, то есть выдаёт мне один знак, а не цепочку. Я думал есть простое решение это сделать. А то сейчас я представлю, все значения попарно разбивать аа 0е b1 ff итп, а потом каждый по отдельности переводить в этот формат и потом склеивать цепочку, вот и подумалось, есть ли решение нормальное и готовое. А то всё облазил, ничего не нашёл, sprintf с "c" не предлагать, конвертит тоже только один знак.. |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 2 Всего: 121 |
Готового решения нет. Пиши сам.
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| Ches |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 19.8.2008 Репутация: нет Всего: 3 |
||||
|
||||
| Viroman |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 28.7.2008 Репутация: нет Всего: нет |
Спасибо, тоже некая помощь, всё самому
|
|||
|
||||
| Viroman |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 28.7.2008 Репутация: нет Всего: нет |
Тут у меня возник вопрос, коль уж мне substr применять приходится, и из за этого приходится дополнительную библиотеку инклудить, что приводит к неимоверному разрастанию кода, есть ли решения по типу substr под char, а не string, а то substr только со string работает. В общем буду благодарен, хочется прогу видеть миловидную, а не монстра..
|
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 6 Всего: 162 |
strstr
|
|||
|
||||
| Viroman |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 28.7.2008 Репутация: нет Всего: нет |
Я не могу strstr применять, чтобы позиционно выдирать знаки, оно мне не подходит, мне надо так, с места 2 два знака, что substr делает, а как это с strstr сделать, если он по другому работает?
|
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 6 Всего: 162 |
а, тю, перепутал... strncpy(dest, str+offset, len)
|
|||
|
||||
| Viroman |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 28.7.2008 Репутация: нет Всего: нет |
Я эту функцию знаю и уже использовал, только в ней нерешимая для меня сейчас проблема, если стринг имеет два ноля, 00, то функция не срабатывает, если есть возможность, перепроверьте пожалуйста, у всех она так поступает, или только у меня :(
Это сообщение отредактировал(а) Viroman - 29.8.2008, 21:24 |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 6 Всего: 162 |
в смысле, два нулевых байта? тогда тебе нужно memcpy. |
|||
|
||||
![]()
|
| Правила форума "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. |