为什么以 10 为底的 -9 等于以 17 为底的 a7ffda89?
Why is -9 base 10 equal to a7ffda89 in base 17?
使用 Microsoft 的 itoa
实现,如何将 "a7ffda89" 作为基数 10 中 -9 的基数 17 表示?我要找的是算法的描述。
这是我用来找出 itoa
使用 Microsoft 的实现会 return 的代码:
#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);
}
-9 表示为 无符号 32 位整数 是 4294967287。将 that 转换为基数 17 得到 a7ffda89。作为检查,在 Python:
>>> int('a7ffda89', 17) - (1<<32)
-9
If base
is 10 and value is negative, the resulting string is preceded with a minus sign (-). With any other base, value is always considered unsigned.
使用 Microsoft 的 itoa
实现,如何将 "a7ffda89" 作为基数 10 中 -9 的基数 17 表示?我要找的是算法的描述。
这是我用来找出 itoa
使用 Microsoft 的实现会 return 的代码:
#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);
}
-9 表示为 无符号 32 位整数 是 4294967287。将 that 转换为基数 17 得到 a7ffda89。作为检查,在 Python:
>>> int('a7ffda89', 17) - (1<<32)
-9
If
base
is 10 and value is negative, the resulting string is preceded with a minus sign (-). With any other base, value is always considered unsigned.