小编典典

如何将“unsigned long long int”转换为Java?

all

这是一个用 C 编写的代码。它接收一个整数作为命令行参数,并计算递归关系。

我想将此代码转换为 Java,但不确定如何重写以下部分。有谁知道我如何用Java编写它?

unsigned long long int gn[3]={0,0,1}, tmp;

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]){
    unsigned long long int gn[3]={0,0,1}, tmp;
    int i, j;
    int n = atoi(argv[1]);
    for(i=3; i<=n; i++){
        tmp = 0;
        for(j=0; j<3; j++){
            tmp += gn[j];
        }
        gn[0] = gn[1];
        gn[1] = gn[2];
        gn[2] = tmp;
    }
    if(n<2){
        printf("%ld\n",gn[n]);
    }else{
        printf("%llu\n",gn[2]);
    }
    return 0;
}

结果

Input: 1, Output: 0

Input: 5, Output: 4

Input: 10, Output: 81

Input: 30, Output: 15902591


阅读 71

收藏
2022-07-31

共1个答案

小编典典

从 Java 8 开始,支持 unsigned long(无符号 64 位)。您可以使用它的方式是:

Long l1 = Long.parseUnsignedLong(“17916881237904312345”);

要打印它,你不能简单地打印 l1,但你必须首先:

String l1Str = Long.toUnsignedString(l1)

然后 System.out.println(l1Str);

如果您使用的 Java 版本低于 Java 8,那么您应该使用BigInteger

2022-07-31