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