「TCHAR」から「unsigned __int64」へ変換するには?

解決


BX  2009-04-24 06:58:45  No: 70041

「TCHAR」から「int」や「double」、「__int64」や「long」などの型に変換する関数は探せば見つかったのですが、どうしても「unsigned __int64」へ変換する関数が見つかりません。
自分で関数を用意するしかないのか、それとも探し方が悪くて実はあるのか、教えていただきたいのです。
よろしくお願いいたします。


tetrapod  2009-04-24 17:29:57  No: 70042

変換ってのが何を意図してる文言なのか良くわからんけど
TCHAR c='a';
__int64 x=c; でも「変換」しているわけで。

_stscanf とか。


Blue  2009-04-24 19:05:55  No: 70043

>「TCHAR」から「int」や「double」、「__int64」や「long」などの型に変換する関数
とは?

TCHARは、charまたはwchar_t(unsigned short)ですのでint, double, __int64, longのどれよりも扱える範囲が狭いです。
ですので、代入するときはそのまま(ケタ落ちせずに)入れれます。

TCHAR c = 10;
int n = c;
double d = c;
__int64 n64 = c;
long l = c;

unsigned __int64の場合、負の値を扱わないものなので、どう扱うか決めてもらわないと単に代入ということはできません。
(マイナスの値をどう扱うか)

もっとも、TCHAR型の『配列』で『123』という『文字列』を数値の123として扱うという意味であればまったく質問の内容が間違っています。


rin  2009-04-25 01:08:03  No: 70044

「atoi、atol atoi64 のように  __atoui64  があると思ったのに見当たらない」
ってことじゃないか?


BX  2009-04-25 03:29:56  No: 70045

すいません、言葉が足りませんでした。以後気をつけます…
いわゆるatoi関数のように、文字列を数値として扱うようにしたいのです。

http://msdn.microsoft.com/ja-jp/library/0heszx3w(VS.71).aspx
を見ても、「文字列 → __int64」は載っているのに、探している「文字列 → unsigned __int64」は載っていなかったので、質問させていただきました。


tetrapod  2009-04-25 03:50:53  No: 70046

だから _stscanf で変換できる (VC++6 以後すべて)

ato* 系は符号付きしかないので今回の用途には向かない
strto* 系に _tcstoui64 (_strtoui64) があるけど VC++6 には無い
vs2003 以後か vs2005 以後かでよければ _tcstoui64 で。


BX  2009-04-25 05:20:26  No: 70047

みなさん、ありがとうございました。無事解決いたしました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加