自前の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; }
使い方ヒント: 「これは臭う」という行を見付けたら、各行のをクリックしてマーキングしておきましょう(要Twitter OAuth認証)
まだコメントがありません。最初にコメントを残しませんか?
コメント投稿には、twitter認証が必要です。
Twitter認証