gpt4 book ai didi

java - 返回存储长值所需的字节数的函数

转载 作者:行者123 更新时间:2023-12-01 07:46:28 25 4
gpt4 key购买 nike

我创建了一个函数,它返回存储长值所需的字节数。该值必须位于 [Long.MIN_VALUE, Long.MAX_VALUE] 中。

private static final int ONE_BYTE_MAX = (1 << 7) - 1; // 127

ONE_BYTE_MAX 值为 127

private static final int ONE_BYTE_MIN = -(1 << 7);  // -128

ONE_BYTE_MIN 值为 -128

private static final int TWO_BYTE_MAX = (1 << 15) - 1; 

private static final int TWO_BYTE_MIN = -(1 << 15);

private static final int THREE_BYTE_MAX = (1 << 23) - 1;

private static final int THREE_BYTE_MIN = -(1 << 23);

private static final long FOUR_BYTE_MAX = (1L << 31) - 1;

private static final long FOUR_BYTE_MIN = -(1L << 31);

private static final long FIVE_BYTE_MAX = (1L << 39) - 1;

private static final long FIVE_BYTE_MIN = -(1L << 39);

private static final long SIX_BYTE_MAX = (1L << 47) - 1;

private static final long SIX_BYTE_MIN = -(1L << 47);

private static final long SEVEN_BYTE_MAX = (1L << 55) - 1;

private static final long SEVEN_BYTE_MIN = -(1L << 55);

方法

public static int getBytesForLongValue(long value) {
if (value >= ONE_BYTE_MIN && value <= ONE_BYTE_MAX) {
return 1;
} else if (value >= TWO_BYTE_MIN && value <= TWO_BYTE_MAX) {
return 2;
} else if (value >= THREE_BYTE_MIN && value <= THREE_BYTE_MAX) {
return 3;
} else if (value >= FOUR_BYTE_MIN && value <= FOUR_BYTE_MAX) {
return 4;
}else if (value >= FIVE_BYTE_MIN && value <= FIVE_BYTE_MAX) {
return 5;
}else if (value >= SIX_BYTE_MIN && value <= SIX_BYTE_MAX) {
return 6;
}else if (value >= SEVEN_BYTE_MIN && value <= SEVEN_BYTE_MAX) {
return 7;
} else {
return 8;
}
}

java中有没有简单的方法

最佳答案

虽然我认为对于 Java 中的 long 基本类型我们应该将字节数保留为 8,但是还有一种替代方法来计算保存 long 值(包括符号位)的最小字节数。此外,这种方法还可用于计算调整方法签名的任何整数的大小:

public static int getMinNoOfBytes(BigInteger value)

尽管如此,代码如下:

public class Answer {

public static int getMinNoOfBytes(long value) {
BigInteger any = BigInteger.valueOf(value);
return any.toByteArray().length;
}


//Test
public static void main(String[] args) {

//Long.MAX_VALYE
System.out.println(getMinNoOfBytes(Long.MAX_VALUE));

//Long.MIN_VALUE
System.out.println(getMinNoOfBytes(Long.MIN_VALUE));

//Any value
System.out.println(getMinNoOfBytes(65536));

}
}

输出(如预期)

883

关于java - 返回存储长值所需的字节数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50932749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com