![]() |
|
Модераторы: bsa |
![]()
|
|
| Viroman |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 28.7.2008 Репутация: нет Всего: нет |
Здравствуйте, вот это дилемма, я не знаю, как её решить?
Предположим, доделал свою прогу так, чтобы она из вереницы хексадецимальных чисел создавала бы на выходе ansi characters, но вот с нулями загвоздочка, она не очень то хочет этим заниматься. Как всё таки решить проблему? Буду рад ответам. |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 19 Всего: 306 |
||||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
А нельзя ли писать вопрос так, чтоб читающим было понятно, что Вы хотите получить ?
char c = '\0'; // Вот вам нуль в чаре, что еще требуется ? Это сообщение отредактировал(а) mes - 2.9.2008, 15:22 |
|||
|
||||
| Viroman |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 28.7.2008 Репутация: нет Всего: нет |
Предположим, задал такой параметр в коммандную строку AABBCC99 итп, из этого хексадецимального барахла должна получиться буквенная абракадабра, то есть всякие разные знаки из 256 штук, поясню, если открыть файл, в котором эти самые знаки находятся каким нибудь HEX редактором, то увидишь их эквивалент в хекформате, то бишь знаки показываются там в хексформате как AABBCC99 итп.
Но вот с двумя нулями 00 ничего не выходит.. Добавлено через 7 минут и 19 секунд К вашему сведению \0 зарезервирован. Он означает, что на этом месте стринг заканчивается. А то что я хочу, возьмите предположим следующее... UCHAR chislo[32]="\xAA\xBB\xCC\x99"; И выдайте его на оутпут, это и есть искомое. Но если попробуете задать так, UCHAR chislo[32]="\xAA\x00\xBB\xCC\x99"; То оутпут будет оборван после AA. То есть почему то он считает, что на этом строка закончилась. |
|||
|
||||
| Ches |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 19.8.2008 Репутация: нет Всего: 3 |
очень вежливо и учтиво попросить эту прогу з.ы. Дэвид Блейн в отпуске, оставшиеся на форуме не обладают навыками уличной магии и не могут догадаться, какие манипуляции производит "прога" з.з.ы. что такое "хексадецимальное" число? какое основание? |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 19 Всего: 306 |
Viroman, интересно а что ты вообще делаешь?
|
|||
|
||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
A к вашему сведенью он зарезервирован, только в функциях вывода стандартных си функций и их аналогов. То есть для тех функций которые используют Си-строку.
Подобная фраза ничего не говорит. Все зависит от того куда идет вывод. Консоль к примеру имеет свое представление на соответствие кодов символам и ничего тут не исправишь. Вы судя по всему хотите по своему интерпретировать значения строки, но пока Вы не осветите задание нормально, вряд ли Вам кто сможет помочь. (разве что какой нибудь телепат) Добавлено через 51 секунду HEX , 16ти-ричная система счисления |
||||
|
|||||
| Ches |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 19.8.2008 Репутация: нет Всего: 3 |
ну дык по-русски это и есть 16-ричное... я думал, мож чё нового изобрели Насколько я понял, нулю вообще не соответствует символ, в том и загвоздка. Разговор об этом? |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
но только вот абсолютно неясно куда он его выводит и как .. |
|||
|
||||
| Viroman |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 28.7.2008 Репутация: нет Всего: нет |
Ввод идёт через командную строку, попадает в argv, вывод идёт на один девайс через DeviceIoControl, принимает только char *
To что это можно через стринги реализовать, знаю, делал уже, и получалось, однако оно не то.. Вот код примера с выводом в файл.
PS: открываемый девайс несуществующий, но для общего понимания хватит. Основная программа выглядит чуть иначе, с проверками наличия аргументов, задержки итп, но вот этого абсолютно хватит, чтобы понять функцию программы. PS: не забудьте создать батник предположим, и туда пишите progrramm.exe AABBCCDD01 и тому подобное, на выходе создастся файл, в котором вывов ввиде ansi. Откройте в hex редакторе, но вот с 00 не получается, а на вывод DeviceIoControl это необходимо именно вот так.. Помогите пожалуйста. |
|||
|
||||
| Viroman |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 28.7.2008 Репутация: нет Всего: нет |
Правильно ли я понимаю, ни у одного из отметившихся в этой форумной ветке нет никаких идей, как эту паразитивную особенность исправить, переделать, итп, лишь бы умело \x0 отсылать.
Может будут идеи? По мне пусть другой путь, лишь бы DeviceIoControl понимал.. |
|||
|
||||
| bsa |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Пример использования:
|
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
Ну на этой части проблеммы есть ? если нету то зачем загружаете отвечающих ненужными подробностями ? Насколько я теперь понимаю проблема состоит в том, что если Вы на устройство передаете си строку, содержащую \0, то строка обрезается ? В случае с файлом Вы используете не подходяшую функцию. Вы должны записывать буффер, а не строку, так как для строки \0 является символом окончания. Но как мне кажется , пример с файлом просто демонстрационный, и проблема лежит на взаимодействии с DeviceIoControl. Однако точно ответить, почему Ваш несушествующий девайс работает неправильно, нереально.. Так как догадаться, что за ним скрывается и как реализовано, возможным не представляется. А вы в свою очередь приняли все меры, чтоб нормально изъяснить проблему и показать проблемные места. Нет. понимаете неправильно. Скорей всего просто многие из тех , кто мог бы ответить, просто не стали читать кучу неразборчивого текста, а из тех кто стал, мало кто понял о чем речь. Сорри конечно за кучу нравоучений.. ничего личного.. в общем используйте понятие буффер вместо строки и будет Вам счастье. пример для файла привел выше bsa. А если еще ознакомитесь со статьей по ссылке в его подписи, то и на долю отвечающих тоже немного счастья перепадет Это сообщение отредактировал(а) mes - 2.9.2008, 18:42 |
|||
|
||||
| Viroman |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 28.7.2008 Репутация: нет Всего: нет |
bsa, к сожалению и этот код не работает, в том стринге AABBCC00DDEE12345678, где также присутствует 00, программа переводит его в AABBCCE0DD...итп
А также неправильно переводит численные значения, в общем даже мой код в этом отношении лучше.. Добавлено @ 18:46
Я вас прощу за нравоучения, лишь когда приведёте рабочий код, и чтобы в файле нормально откладывался, а до тех пор это останется излишней болтологией, к тому же пример с буффером PS: на примеры с мемори аллкацией как буффер можно даже не заикаться, оно то же самое выдаёт.. Это сообщение отредактировал(а) Viroman - 2.9.2008, 18:52 |
|||
|
||||
| mes |
|
||||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
так в чем у Вас все таки проблема ? в переводе или в выводе? в том что вместо двойного 0, одинарный записывается ? или в том что после нуля строчка обрывается? или в чем то другом ?
a код bsa неправильно откладывает ? так Вы хоть вобще представляете что именно Вам нужно ? какая разница как получен буффер, если у Вас вывод не работает.
для примера с буффером , я Вам указал на пример (котырый другой отвечающий успел написать до меня):
тут запись идет не строки, а n-гo кол-ва байт. Этим отличается вСи понятия строка и буффер символов. (тем что у буфера символы не являются управляюшими). Кстати с вышеуказанной ссылкой судя по всему Вы даже и не постарались ознакомиться.. очень жаль.. |
||||||
|
|||||||
![]()
|
| Правила форума "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. |