Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 20.06.2017
Сообщений: 2

Случайная ошибка перевода из string в long int strtol

23.03.2018, 14:49. Показов 1031. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, проблема заключается в следующем есть файл из которого надо прочитать данные . Часть из них надо перевести из строкового типа в целочисленный . Файл читается в бинарном виде , порядок байт Little Endian. Перевод из String в Long int осуществляется с помощью функции strtol. Данные читаются из заголовка файла. После нескольких удачных отрабатываний функции strol в переменную long int происходит следующая ситуация : в переменную string записывается значение вида 0x00000134 при переводе с помощью strtol на выходе получаем 0x0000134F. В каком моменте я не прав и в чем заключается ошибка?
Вот функция которая занимается переводом из char в long int формата hex
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
long int chartohex(char *ch,int j)
{
 
int j1=j-1;
long int hexint;
hexint=0;
char exchange[1];
 
switch (j) {
    case 2:
        {
        char hexchar2[6];
        for (int i=0; i<j/2;i++)
        {
//отзеркаливание последовательности char
        exchange[0]=ch[i];
        ch[i]=ch[j1-i];
        ch[j1-i]=exchange[0];
        }
//перевод из char в string 
        string hexstring="0x"+tohex(ch);
 
        for (int i = 0; i < sizeof hexchar2; i++) {
        hexchar2[i]=hexstring[i];
        }
 
//при преобразовании в этом моменте возникает ошибка  
        hexint=strtol(hexchar2,NULL,16);
        break;
        }
    case 4:
        {
        char hexchar4[10];
        for (int i=0; i<j/2;i++)
        {
        exchange[0]=ch[i];
        ch[i]=ch[j1-i];
        ch[j1-i]=exchange[0];
        }
        string hexstring="0x"+tohex(ch);
 
        for (int i = 0; i < sizeof hexchar4; i++) {
        hexchar4[i]=hexstring[i];
        }
        hexint=strtol(hexchar4,NULL,16);
        break;
        }
    case 8:
        {
        char hexchar8[18];
        for (int i=0; i<j/2;i++)
        {
        exchange[0]=ch[i];
        ch[i]=ch[j1-i];
        ch[j1-i]=exchange[0];
        }
        string hexstring="0x"+tohex(ch);
 
        for (int i = 0; i < sizeof hexchar8; i++) {
        hexchar8[i]=hexstring[i];
        }
        hexint=strtol(hexchar8,0,16);
        break;
        }
 
    default:
    {
 
    }
 
    }
    return hexint;
 
 
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.03.2018, 14:49
Ответы с готовыми решениями:

Требуется написать функцию long long pow(long long a, unsigned int p), которая возводит число a в степень p
Требуется написать функцию long long pow(long long a, unsigned int p), которая возводит число a в степень p и возвращает ap. Помогите...

Моя реализация функции перевода string в int
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int str_to_int(string a); int main() { string s =...

Конвертация массива int, long, boolean, String, double, в List, Set, Queue, Deque
С конвертацией простых типов и строк ничего сложного. Вот код public class Main { public static &lt;T&gt; void...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.03.2018, 14:49
Помогаю со студенческими работами здесь

Создать объединение, что содержит элементы типов char int short fload long string
всем доброго времени суток! мне нужно создать объединение, что содержит элементы типов char int short fload long string. создать массив...

Too few parameters in call to 'Lechebnica::AddNewElement(int,int,string,string,int,string)
Edit1 Id Edit2 Имя Edit3 Фамилия Edit4 Номер телефона ComboBox1 Услуга Всё string, кроме id, оно int ...

Метод int MmPp(string str) для перевода строковой даты в число
Написать метод int MmPp(string str) {} Параметром является дата в виде &quot;21.mai&quot; (число, точка, пробел, название месяца текстом). ...

Конвертация с long unsigned в int ошибка
warning: conversion to ‘long unsigned int’ from ‘int’ may change the sign of the result offset == 2? offset = 4 : offset ==4?...

Написать функцию для перевода переменной типа long в символьную строку в шестнадцатиричном представлении ( ltoah( long num, char s[]) ) и тестирующую
Написать функцию для перевода переменной типа long в символьную строку в шестнадцатиричном представлении ( ltoah( long num, char s) ) и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru