そのため、リトルエンディアンとビッグエンディアンの両方のマシンでstrtoulを使用して、文字列からunsignedlongへの変換を行っています。リトルエンディアンのマシンは正しい値を返しますが、ビッグエンディアンのマシンは返しません。この関数は本当にビッグエンディアンのマシンと互換性がありませんか?もしそうなら、回避策はありますか?
コード:
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
PSビッグエンディアンの例では、常に同じ番号が返されるようです。