Здравствуйте, уважаемые эксперты! У меня вопрос: как в буфер записать байты данных в hex-виде с помощью функции strcpy или strncpy. Можно с помощью других функций, главное, чтобы можно было писать в одну строчку и в hex-виде. Пытался делать следующим образом (по ответу эксперта bocha на вопрос № 1672, наверное он ошибся, ведь в кавычках идут символы строки, а не байты): #include unsigned char buffer[255]; void main() { strncpy(buffer,"x2Fx3Fx21x0Dx0A",5); } При просмотре отладчиком в буфер пишутся "левые" данные: buffer[0]='x0' buffer[1]='x0' buffer[2]='x0' buffer[3]='x0' buffer[4]='x0' Заранее Вам большое спасибо!
Доброе время суток, Эдуард! Извините за то, что ввел Вас в заблуждение. Перед иксами нули ставить было не надо. Примерно через минуту после того, как отправил ответ, я начал громко и грязно ругаться, благо в округе никого небыло. '\0'-это ноль-символ, так, что данные не левые, а просто строка не правильно записана
Приложение: Ответ отправлен: 06.06.2004, 19:22 Отправитель: bocha Отвечает CrackLab
Доброе время суток, Эдуард! Хелпом совсем не пользуетесь? Вам кстати уже дали несколько правильных ответов. Так и пишите: char buffer[255]; strcpy(buffer, "/?!
");
Приложение: Ответ отправлен: 06.06.2004, 17:51 Отправитель: CrackLab Отвечает www
Добрый день, Эдуард! Если надо записать в буфур значения байт в hex виде, ъто это можно сдежать так: char buffer[20]; sprintf(buffer,"0x%0.2X,0x%0.2X,0x%0.2X,0x%0.2X,0x%0.2X",'/','?','!','','
');
Ответ отправлен: 06.06.2004, 21:23 Отправитель: www
Вопрос № 1680
Здравствуйте эксперты. У меня такой вопрос: Как установлявается связь программы использующая DAO с библиотекой dao350.dll? У меня в реестре прописано HKEY_CLASSES_ROOTTypeLib{00025E01-0000-0000-C000-000000000046} библиотеки размещены в C:Program FilesCommon FilesMicrosoft SharedDao На другом компе тоже самое и в реестре и на диске по тому же пути, а прога не пашет, выдает сообщение: "Не удается инициализировать DAO/Jet обработчит баз данных" Единственная разница - где запускается прога, у меня ось - win98, а на другом winXP. Как сделать чтобы програ работала на обоих осях? Может кто работал с DAO и просветит в этом вопросе. Хотелось бы получить исчерпывающий ответ. Заранее благодарен. Абрамовский Иван.
Добрый день, Иван Абрамовский! Redistributing Microsoft Visual C++ 6.0 Applications Installing DAO Support Files You can install the necessary files to support a DAO application in one of two ways: Use the Redist version of DAO, which is found in DaosdkRedist on Disc 1 of the Visual C++ 6.0 product CDs. The Setup file, which is in DaosdkRedistDisk1, installs the necessary files to support a DAO application. Hand-install the necessary DAO support files. You can find information about which files need to be installed and registered in the file Daosetup.rtf. Daosetup.rtf is installed when you install the full version of the DAO SDK. See DaosdkRetailDisk1 for the Setup file to install the DAO SDK. This version of DAO not only supports DAO running on a computer, but also gives you the necessary support to develop a DAO application. To install the DAO
SDK, the target computer needs current system files. Therefore, you may need to first run Vbrun60.exe or Dcom98.exe. See the section "Redistributing Visual C++ ActiveX Controls" earlier in this article for more information on Dcom98.exe and Vbrun60.exe.
Ответ отправлен: 10.06.2004, 07:00 Отправитель: bocha
Вопрос № 1681
Здравствуйте, уважаемые эксперты! Вы, наверное, меня неправильно поняли. Но мне нужно записать в буфер символы не в ASCII-виде (strcpy(buffer,”/?!/r/n”)), а в HEX. Т.е. имеется буфер buffer[255]. И данные нужно писать так: buffer[0]=0x2F buffer[1]=0x3F buffer[2]=0x21 buffer[3]=0x0A buffer[4]=0x0D Но это получается громоздко, поэтому я у Вас и просил, как можно эти данные записать одной строчкой при помощи команды strcpy или каких-то других. Почему не подходит в ASCII-символах (strcpy(buffer,”/?!/r/n”)), потому что у меня имеются символы STX (hex-код 0х02), SOH (hex-код 0х01), ETX (hex-код 0х03), ЕОТ (hex-код 0х04), ACK (hex-код 0х06), NAK (hex-код 0х15) и другие и соответственно записать их в ASCII символах не получается (так как во-первых на клаве нет таких значков (рожица белая и черная, сердечко, ромбик,
значок параграфа и т.д. ), во-вторых, даже если есть способ записать их в ASCII символах, то это при отладке будет только путать, в-третьих в HEX-виде удобнее, т.к. я уже знаю, что байт 0х01 – это символ SOH (Start Of Head), байт 0х06 – это символ ACK (положительный ответ)) Надеюсь подробно объяснил! ЗЫ. 2 CrackLab: если возник вопрос, то первым делом я в HELP, вторым – на www.rambler.ru, третьим – на www.rusfaq.ru. Не в обиду :) 2 bocha: опять ошиблись! strcpy(buf,"x2Fx3Fx21x0Dx0A"); При отладке смотрим: buf[0]=x, buf[1]=2, buf[2]=F, buf[3]=x и т.д. А нужно, чтобы buf[0]=0x2F, buf[1]=0x3F, buf[2]=0x21 и т.д. Жду ответов!
Добрый день, Эдуард! При отладке путать ничего не будет просто нужно использовать шестнадцатеричное отображение данных (для VC++ - правой кнопкой мыши в Watch-ах -> Hexadecimal Display). А в твоем случае ("нужно, чтобы buf[0]=0x2F, buf[1]=0x3F, buf[2]=0x21 и т.д.") hex-вид этих символов будет занимать четыре байта 1-'0',2-'x',3-'2',4-'F' (например). В то время как для символа buf[0](например)отведен только ОДИН байт. Так, что не заморачивайся в твоем отладчике наверняка есть возможность просматривать символы как в десятичном, так и в hex-видах. Удачи.
Ответ отправлен: 07.06.2004, 19:08 Отправитель: www Отвечает CrackLab
Приветствую Вас, Эдуард! ААааааа например так: (смотри в приложении)
Приложение: Ответ отправлен: 07.06.2004, 01:51 Отправитель: CrackLab Отвечает bocha
Приветствую Вас, Эдуард! Я не ошибся, просто формма ответа и в приложении почему-то не хочет показывать бэкслэши. Короче в строку вставляется последовательность \xHH- бэкслэш-икс-хекскод. Все работает нормально, а в первый раз ответил неправильно, т.к. поторопился. В первом ответе убери из строки нули, а во втором перед иксами вставь обратную косую черту. Ответ отправлен: 07.06.2004, 03:49 Отправитель: bocha
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.