0

Microsoft の の実装を使用しitoaて、基数 10 の -9 の基数 17 表現として "a7ffda89" を取得するにはどうすればよいですか? 私が探しているのは、アルゴリズムの説明です。

itoaMicrosoft の実装を使用して何が返されるかを調べるために使用したコードを次に示します。

#include "stdafx.h"  
#include <stdlib.h>

int main(int argc, char *argv[])
{
  (void)argc;
  (void)argv;
  char buff[256] = {};
  memset(buff, '0', 256);
  _itoa_s(-9, buff, 256, 17);
  exit(0);
}
4

2 に答える 2

3

cplusplus.comから:

が 10 で値が負の場合base、結果の文字列の前にマイナス記号 (-) が付きます。他の基数では、値は常に符号なしと見なされます。

于 2016-04-03T01:35:18.283 に答える
2

-9 を符号なし 32 ビット整数で表すと 4294967287 です。これを基数 17 に変換すると、a7ffda89 が得られます。チェックとして、Pythonで:

>>> int('a7ffda89', 17) - (1<<32)
-9
于 2016-04-03T01:35:13.720 に答える