使用Microsoft的itoa
实现,您如何获得" a7ffda89"作为基数为10的基数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);
}
答案 0 :(得分:3)
如果
base
为10且值为负,则结果字符串前面带有减号( - )。对于任何其他基础,值始终被视为无符号。
答案 1 :(得分:2)
-9为4294967287.将 转换为基数17得到a7ffda89。作为检查,在Python中:
>>> int('a7ffda89', 17) - (1<<32)
-9