我想知道如何在 未签名 基础16 号码和 签名之间进行转换 基数10 数字?
例如
5d0cfa30041d4348< - > 6705009029382226760
024025978b5e50d2< - > 162170919393841362
fb115bd6d34a8e9f< - > -355401917359550817
顺便说一句,它们实际上是某些项目的ID。在内部,它们都是64位数字,但在两个演示文稿中。
我可以使用的任何课程?
由于
答案 0 :(得分:1)
如果基数16值是常数或存储在变量中,则简单转换将起作用。
long long llint1 = (long long int)0x5d0cfa30041d4348;
long long llint2 = (long long int)0x024025978b5e50d2;
long long llint3 = (long long int)0xfb115bd6d34a8e9f;
NSLog(@"\n%lld\n%lld\n%lld", llint1, llint2, llint3);
如果值是字符串,则只需要先扫描。
unsigned long long tmp;
NSScanner *nscanner = [NSScanner scannerWithString:@"0x5d0cfa30041d4348"];
[nscanner scanHexLongLong:&tmp];
llint1 = (long long int)tmp;
nscanner = [NSScanner scannerWithString:@"0x024025978b5e50d2"];
[nscanner scanHexLongLong:&tmp];
llint2 = (long long int)tmp;
nscanner = [NSScanner scannerWithString:@"0xfb115bd6d34a8e9f"];
[nscanner scanHexLongLong:&tmp];
llint3 = (long long int)tmp;
NSLog(@"\n%lld\n%lld\n%lld", llint1, llint2, llint3);
注意:scanHexLongLong
和其他扫描方法返回BOOL以确定扫描是否成功。如果使用字符串,最好检查扫描是否成功。