![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| CYBERDREAM |
|
||||
![]() I think, there4 I am ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1096 Регистрация: 31.10.2006 Где: CyberLand Репутация: нет Всего: 28 |
Приветтсвую всех!
Столкнулся с задачей перевода проекта с С++ на C#. Так вот, имеется функция преобразования строки по указателю:
sprintf, на сколько я понимаю, выводит данные в строку.
Можете объяснить на пальцах последнего выражения? -------------------- Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно) Telegram, skype: kuchuk.artiom |
||||
|
|||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
если текущее выводимое число является последним в массиве, то выводим его без символа '-' в конце, иначе - выводим с символом %04X - вывод числа в шестнадцатиричном виде, выводится только 4 символа (что достаточно для представления в шестнадцатиричном виде short-а) Это сообщение отредактировал(а) MAKCim - 21.11.2007, 16:21 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| CYBERDREAM |
|
|||
![]() I think, there4 I am ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1096 Регистрация: 31.10.2006 Где: CyberLand Репутация: нет Всего: 28 |
Thx, а чем объясняется, что смещение у указателя scratch на 5, а у других на 1, размерность думаю не причем
Это сообщение отредактировал(а) CYBERDREAM - 21.11.2007, 16:23 -------------------- Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно) Telegram, skype: kuchuk.artiom |
|||
|
||||
| CYBERDREAM |
|
|||
![]() I think, there4 I am ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1096 Регистрация: 31.10.2006 Где: CyberLand Репутация: нет Всего: 28 |
с последним разобрался, прыгает на каждый 4 символ.
04X преобразовывает из 16 системы в десятиричную? -------------------- Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно) Telegram, skype: kuchuk.artiom |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
На самом деле это означает выводить целое число в шестнадцатиричном формате минимум 4 цифры. Если число менее 4-х цифр, то забить недостающие нулями. Вывод букв должен быть в верхнем регистре: примеры: 10 -> "000A" 0x1234 -> "1234" 100 -> "0064" 65537 -> "10001" |
|||
|
||||
| CYBERDREAM |
|
|||
![]() I think, there4 I am ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1096 Регистрация: 31.10.2006 Где: CyberLand Репутация: нет Всего: 28 |
Thx bsa. Вопрос полностью решен
-------------------- Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно) Telegram, skype: kuchuk.artiom |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
как раз причем мы записываем в строку каждый раз 5 символов (4 символа - число, 1 символ - дефис) т. к sizeof(char) = 1, то нам надо инкрементировать scratch на 5 epcIter увеличиваем на 1, но на самом деле указатель увеличивается на 2, т. к sizeof(short) = 2 ну а я что написал? в данном случае будет выведено только 4 символа -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
согласен. Хотя есть подозрение, что код просто не корректен, так как в качестве параметра передается unsigned short, а sprintf ожидает unsigned. Но, учитывая, что в стек пихаются только 32-х разрядные слова, можно считать, что он работает. |
|||
|
||||
| CYBERDREAM |
|
|||
![]() I think, there4 I am ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1096 Регистрация: 31.10.2006 Где: CyberLand Репутация: нет Всего: 28 |
работает на все 100, вот по шарпом еще не очень, с указателями еще не разобрался
-------------------- Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно) Telegram, skype: kuchuk.artiom |
|||
|
||||
| xvr |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Код корректен - при передаче параметров через ... все целые, короче int преобразуются к int (или unisgned int) Хотя можно было бы в sprintf модификатор h поставить (хотя я не видел НИ ОДНОЙ программы, где бы он использовался |
||||
|
|||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |