C言語の標準関数を目的別に調べることができる辞典

ホーム > C 標準関数逆引き辞典 > 数値・数学 > n進数の文字列を数値に変換する

C 標準関数逆引き辞典

:: reverse dictionary ::

数値・数学

※ソースファイルについて


n進数の文字列を数値に変換する

n進数の文字列を数値に変換するには、strtol 関数を使います。

≪宣言≫

#include <stdlib.h>
char str[] = "11";
char *endstr;
long base2, base8, base16;

base2 = strtol(str, &endstr, 2);    /* 2進数 */
base8 = strtol(str, &endstr, 8);    /* 8進数 */
base16 = strtol(str, &endstr, 16);  /* 16進数 */

ソースファイル

base23base89base1617 になります。


ワイド文字列の場合は wcstol 関数を使います。

≪宣言≫

#include <locale.h>
#include <stdlib.h>
wchar_t str[] = L"11";
wchar_t *endstr;
long base2, base8, base16;

setlocale(LC_ALL, "ja");  /* ロケールを日本語に設定 */

base2 = wcstol(str, &endstr, 2);    /* 2進数 */
base8 = wcstol(str, &endstr, 8);    /* 8進数 */
base16 = wcstol(str, &endstr, 16);  /* 16進数 */

ソースファイル

base23base89base1617 になります。

▼ 関数

long strtol(const char *s, char **e, int r)
long wcstol(const wchar_t *s, wchar_t **e, int r)

文字列 s を 基数 r で数値に変換します。

1文字も変換できなかった場合は 0 を返します。

数値に変換できる所までが変換対象となり、変換できなかった場合はその文字へのポインタを e に設定します。

すべての文字を変換できた場合は、e"" (空の文字列)を設定します。

●引数

s … 数値に変換する文字列
e … 変換できなかった文字へのポインタ
r … 基数

●戻り値

文字列 s を基数 r で変換した数値
1文字も変換できなかった場合は 0

●補足

基数とは、数値の各桁の基礎になる数です。
(「n進数」の「n」の部分)

▼ 参考

最大36進数まで使うことができます。
(0 〜 9 の数字と a 〜 z のアルファベット26文字)

char str[] = "z";
char *endstr;
long base36;

base36 = strtol(str, &endstr, 36);

ソースファイル

base3635 になります。


ワイド文字列も同じです。

wchar_t str[] = L"z";
wchar_t *endstr;
long base36;

setlocale(LC_ALL, "ja");  /* ロケールを日本語に設定 */

base36 = wcstol(str, &endstr, 36);

ソースファイル

base3635 になります。

注目キーワード ベスト5

  1. セキュリティ
  2. ホスティング
  3. レンタルサーバ
  4. ファイル復旧
  5. ハードディスク修復

数値・数学 - number & mathematics -


ホーム > C 標準関数逆引き辞典 > 数値・数学 > n進数の文字列を数値に変換する

Copyright (C) 2005-2007 Noto Watabe. All rights reserved.
e-mail:wmh@always-pg.com