2016-04-03 73 views
0

使用微軟的itoa實現,你如何獲得「a7ffda89」作爲base 10中-9的基數表示?我正在尋找的是該算法的描述。爲什麼在base 17中-9 base 10等於a7ffda89?

這裏是我用來找出itoa將返回使用微軟的實現代碼:

#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); 
} 
+1

它看起來像它轉換'(無符號)-9'。 –

回答

3

cplusplus.com來自:

如果base是10和值是負的,所得到的字符串前面帶有減號( - )。對於任何其他基地,價值總是被認爲是無符號的。

2

-9表示爲32位無符號整數是4294967287.轉換立足17給出a7ffda89。作爲檢查,在Python:

>>> int('a7ffda89', 17) - (1<<32) 
-9