Java int到short,包含两个最高有效字节
我有一个整数Java int到short,包含两个最高有效字节,java,int,short,Java,Int,Short,我有一个整数 int a = //... ints在java中由4个字节组成。如果我们将其强制转换为short,我们将使用两个最低有效字节。获取由int的两个最高有效字节组成的short的最快方法是什么 short b = //take two most significant bytes of a 使用正确的位移位运算符(>)就足够了。由于int原语数据类型的大小为32位(),并且需要获得16个最高有效位,因此需要执行16位的右移: public class Program { p
int a = //...
int
s在java中由4个字节组成。如果我们将其强制转换为short
,我们将使用两个最低有效字节。获取由int
的两个最高有效字节组成的short
的最快方法是什么
short b = //take two most significant bytes of a
使用正确的位移位运算符(>
)就足够了。由于int
原语数据类型的大小为32位(),并且需要获得16个最高有效位,因此需要执行16位的右移:
public class Program {
public static void main(final String[] args) {
final int input = 0xABCDEFAB;
final short output = (short) (input >> 16);
System.out.printf("Original integer: %X%n", input);
System.out.printf("Short with two most significant bytes: %X%n", output);
}
}
另外,值得注意的是,Java语言有符号(
)和无符号(
)位移位运算符。请参阅以下文章:
使用除法运算符可以产生相同的结果:
public class Program {
public static void main(final String[] args) {
final int input = 0xABCDEFAB;
final short output = (short) (input / 0x10000);
System.out.printf("Original integer: %X%n", input);
System.out.printf("Short with two most significant bytes: %X%n", output);
}
}
使用正确的位移位运算符(>
)就足够了。由于int
原语数据类型的大小为32位(),并且需要获得16个最高有效位,因此需要执行16位的右移:
public class Program {
public static void main(final String[] args) {
final int input = 0xABCDEFAB;
final short output = (short) (input >> 16);
System.out.printf("Original integer: %X%n", input);
System.out.printf("Short with two most significant bytes: %X%n", output);
}
}
另外,值得注意的是,Java语言有符号(
)和无符号(
)位移位运算符。请参阅以下文章:
使用除法运算符可以产生相同的结果:
public class Program {
public static void main(final String[] args) {
final int input = 0xABCDEFAB;
final short output = (short) (input / 0x10000);
System.out.printf("Original integer: %X%n", input);
System.out.printf("Short with two most significant bytes: %X%n", output);
}
}
可能的重复。可能的重复。