0

使用 Microsoft 的实现itoa,如何将“a7ffda89”作为基数 10 中 -9 的基数 17 表示?我正在寻找的是算法的描述。

这是我用来找出itoa使用 Microsoft 的实现会返回什么的代码:

#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

如果base为 10 且值为负数,则生成的字符串前面带有减号 (-)。对于任何其他基数,值总是被认为是无符号的。

于 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 回答