自前のatoi関数。一応動くけどさ……。
※追記:16進数のatoiですが、先頭の"0x"を省略したもの(例えば"A68D")を引数に渡しています。
なお、A~Fは大文字で渡す決まりになっていますが、実際のところかなり適当で、小文字にしたもの(例えば"a68d")を渡しているところもちらほら……。
(6/22 追記)1ヶ所ミスがあったので、訂正しました。
/**
* 10進数の文字列から数値に変換する。
*/
int ato1_dec(char *str, int keta) {
int result = 0;
int i;
int kurai;
int k = keta;
for (i = 0; i < keta; i++) {
if (k == 2) kurai = 10;
if (k == 3) kurai = 100;
if (k == 4) kurai = 1000;
if (k == 5) kurai = 10000;
if (k == 6) kurai = 100000;
if (k == 7) kurai = 1000000;
if (k == 8) kurai = 10000000;
if (k == 9) kurai = 100000000;
result += kurai * (str[i] & 0x0f);
}
return result;
}
/**
* 16進数の文字列から数値に変換する。
*/
int ato1_hex(char *str, int keta) {
int result = 0;
int i;
int kurai;
int value;
int k = keta;
for (i = keta-1; i >= 0; i--) {
value = (str[i] > 0x40 ? 9 : 0) + (str[i] & 0x0f);
result = result << 4 + value;
}
return result;
}
まだコメントがありません。最初にコメントを残しませんか?