Итак, я делаю преобразование из строки в unsigned long, используя strtoul как на машине с прямым и младшим порядком байтов. Машина с прямым порядком байтов возвращает правильное значение, а машина с прямым порядком байтов - нет. Действительно ли эта функция не совместима с машинами с прямым порядком байтов? Если да, то есть ли обходной путь?
Код:
printf ("%s\n",cLongs);
theLongs[i] = strtoul(cLongs, NULL, 10);
cout << "returned unsigned long value from string: " << theLongs[i] << endl;
Little endian результат:
1099188638048931
returned unsigned long value from string: 1099188638048931
Результат с прямым порядком байтов:
1099188638048931
returned unsigned long value from string: 4294967295
P.S. Похоже, что для примера с прямым порядком байтов всегда возвращается одно и то же число.