20 / 20 / 11
Регистрация: 12.07.2015
Сообщений: 350
|
|
1 | |
Перевести строку в 16-й формат22.11.2015, 20:33. Показов 18798. Ответов 47
Метки нет (Все метки)
Нужно перевести строку(string) в 16-й формат, как сделать? Знаю про std:hex, но он работает только с char и записать получаемое число в другую переменную нельзя.
0
|
22.11.2015, 20:33 | |
Ответы с готовыми решениями:
47
Как строку в самом коде VBA перевести в формат UTF-8 Как перевести строку формата string, состоящую из цифр, в формат float? Первую строку считать из файла и перевести в формат Integer, а все остальные - в массивы Перевести формат документа |
6 / 6 / 3
Регистрация: 19.09.2010
Сообщений: 173
|
|||||||||||
22.11.2015, 20:45 | 2 | ||||||||||
Для вывода:
0
|
20 / 20 / 11
Регистрация: 12.07.2015
Сообщений: 350
|
||||||
22.11.2015, 20:49 [ТС] | 3 | |||||
А можно это реализовывать с файловым вводом/выводом?
Данный код не работает, останавливает работу и выдает ошибку Возникло необработанное исключение по адресу 0x7584C42D в ТЕСТ.exe: исключение Microsoft C++: std::invalid_argument по адресу памяти 0x0030F9F4. Код:
Упс, не заметил второе сообщение. Сейчас Добавлено через 52 секунды Хотя выдает такую же ошибку, которую описал выше
0
|
6 / 6 / 3
Регистрация: 19.09.2010
Сообщений: 173
|
||||||
22.11.2015, 21:09 | 4 | |||||
0
|
20 / 20 / 11
Регистрация: 12.07.2015
Сообщений: 350
|
||||||
22.11.2015, 21:18 [ТС] | 5 | |||||
А без записи в другой файл? Создавать файл, чтобы в него записать одну строчку, причем этот файл используется как буфер - это, мне кажется, не практично.
Нашел в интернете, но там выдает немного не правильный результат(сравнивал две получившиеся строки). Как это можно использовать, чтобы сделать верную ф-цию перевода.
0
|
6 / 6 / 3
Регистрация: 19.09.2010
Сообщений: 173
|
||||||
22.11.2015, 21:24 | 6 | |||||
Погодите, объясните понятнее задачу... Выше есть пример(продублирую тут) считывания числа в 16 формате в std::string, затем его перевод в int и вывод на консоль в 16 с/с. Какая задача-то..?
К примеру, в файле in.txt будет строка abc, которая считается в переменную s. Затем, в 4 строке, функция stoi переведет эту строку в int. В следующей строке вывод int в формате 16 с/с.
0
|
20 / 20 / 11
Регистрация: 12.07.2015
Сообщений: 350
|
|
22.11.2015, 21:43 [ТС] | 7 |
Задача - нужно из файла считать строку в переменную типа string, пусть эта строка будет abc. Следовательно s = abc. Дальше нужно создать еще переменную типа string ы2 и записать в нее 16 - ричное значение s,то есть abc. Переменная s2 будет иметь такой вид(к примеру, не знаю, как abc будет выглядить в 16-й с/c) - 45a50f. Ну а дальше вывести на экран.
0
|
6 / 6 / 3
Регистрация: 19.09.2010
Сообщений: 173
|
|
22.11.2015, 21:56 | 8 |
Строка в файле - это шестнадцатеричное число или нет?
16 с/с содержит: 0123456789abcdef Т.е. строка abc в файле будет представлена в num как 0x00000abc
0
|
20 / 20 / 11
Регистрация: 12.07.2015
Сообщений: 350
|
|
22.11.2015, 22:03 [ТС] | 9 |
Строка в файле - не число вообще. Это набор символов или букв. Например это - A string like "Hello World" to hex format: 48656C6C6F20576F726C64. Нашел на сайте. Слова типа Hello World будут в файле(ну или любые другие слова). Вообще, может я думаю не в правильном направлении. Мне надо вывести последовательность байт файла. Это из себя представляет 16-ричную строку, например - 48656C6C6F20576F726C64. Но обязательно все записывать в переменные типа string.
0
|
7789 / 6556 / 2984
Регистрация: 14.04.2014
Сообщений: 28,661
|
||||||
22.11.2015, 23:51 | 10 | |||||
1
|
6 / 6 / 3
Регистрация: 19.09.2010
Сообщений: 173
|
|
23.11.2015, 08:54 | 11 |
При этом в выходной строке будут числа в 10 с/с, разве нет? ТС, как я понял, хочет, чтобы в выходной строке были числа в 16 с/с, т.е. ASCII коды символов в 16 с/с.
0
|
7789 / 6556 / 2984
Регистрация: 14.04.2014
Сообщений: 28,661
|
||||||
23.11.2015, 09:52 | 12 | |||||
2
|
20 / 20 / 11
Регистрация: 12.07.2015
Сообщений: 350
|
|
23.11.2015, 18:53 [ТС] | 13 |
То, что я прошу, по идее, должно вывести, как минимум, часть заголовка exe файла, так?. Вот, что из себя представляет этот заголовок:
00-01 4D5A — сигнатура файла .EXE; 02-03 Длина образа задачи по модулю 512 (то есть число полезных байт в последнем блоке). Компоновщики версий до 1.10 помещали в это поле 04; если оно имеет такое значение, его рекомендуется игнорировать); 04-05 Длина файла в блоках; 06-07 Число элементов таблицы настройки адресов; 08-09 Длина заголовка в 16-байтных параграфах. Используется для выяснения начала тела загрузочного модуля; 0A-0B Минимальный объем памяти, которую нужно выделить после конца образа задачи (в 16-байтных параграфах); 0C-0D Максимальный объем памяти, которую нужно выделить после конца образа задачи (в 16-байтных параграфах); 0E-0F Сегментный адрес начала стекового сегмента относительно начала образа задачи; 10-11 Значение SP при входе в задачу; 12-13 Контрольная сумма — ноль минус результат сложения без переноса всех слов файла; 14-15 Значение IP (счетчика команд) при входе в задачу; 16-17 Сегментный адрес начала кодового сегмента относительно начала образа задачи; 18-19 Адрес первого элемента таблицы настройки адресов относительно начала файла; 1A-1B Номер сегмента перекрытий (0 для корневого сегмента программы). Добавлено через 4 минуты Я плохо разбираюсь в exe. Я думаю, что заблуждаюсь в том, что надо выводить последовательность байт именно тем способ, что я прошу.
0
|
836 / 343 / 67
Регистрация: 20.11.2012
Сообщений: 795
|
||||||
23.11.2015, 19:41 | 14 | |||||
2
|
20 / 20 / 11
Регистрация: 12.07.2015
Сообщений: 350
|
|
23.11.2015, 19:56 [ТС] | 15 |
Вооот, то что надо, спасибо огромное А не могли бы Вы пояснить все строчки кода, пожалуйста. Буду благодарен.
Добавлено через 10 минут Совсем забыл. Еще нужно использовать переменные типа string, куда это добавить? Добавлено через 1 минуту Все усложняется из-за алгоритма поиска подстроки, который поддерживает только string
0
|
836 / 343 / 67
Регистрация: 20.11.2012
Сообщений: 795
|
||||||
23.11.2015, 20:04 | 16 | |||||
А вообще работа с потоком байт через string - это костыль тот еще, имхо.
1
|
20 / 20 / 11
Регистрация: 12.07.2015
Сообщений: 350
|
||||||
24.11.2015, 16:35 [ТС] | 17 | |||||
Да вот, string обязателен, буду думать. Кстати, а это можно сделать через двумерный массив, ведь. Тоже самое, только у каждой ячейки будет свой номер. Пойду думать
Добавлено через 20 часов 21 минуту Смотрите, я попробовал так записать в переменную байты, в консоли все выводится очень долго(связано с кол-вом повторений в цикле) , байты все идут и идут. Что может тут не правильно? Кстати и не совсем правильно выводит.
0
|
7789 / 6556 / 2984
Регистрация: 14.04.2014
Сообщений: 28,661
|
||||||
25.11.2015, 13:48 | 18 | |||||
Nik-, это ты всё сигнатуры те делаешь? Зачем вообще преобразовывать бинарные данные в шестнадцатеричное текстовое представление? Просто посмотреть на них? Поиск последовательности байтов работает без всякого преобразования:
1
|
20 / 20 / 11
Регистрация: 12.07.2015
Сообщений: 350
|
||||||
25.11.2015, 15:39 [ТС] | 19 | |||||
Да, эти сигнатуры мне еще долго делать, проектная работа. Попробовал найти обычную сигнатуру 4a5d, определяющую, что файл exe. Но так и ничего не нашел . Может что-то не понял?
1
|
7789 / 6556 / 2984
Регистрация: 14.04.2014
Сообщений: 28,661
|
||||||
25.11.2015, 17:26 | 20 | |||||
Надо же корректировать длину. У меня 5 байт, а у тебя 2:
1
|
25.11.2015, 17:26 | |
25.11.2015, 17:26 | |
Помогаю со студенческими работами здесь
20
Перевести цену в формат текста Полученные секунды перевести в формат 00:00:00 Перевести текст в формат UCS Перевести формат double в CString Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |