Java:如何从32位十六进制中获取16位的高值和低值?

Java:如何从32位十六进制中获取16位的高值和低值?,java,Java,需要一个关于如何执行以下操作的解决方案:接收十进制值,将其转换为32位十六进制,然后分离该32位十六进制,并获得高16位和低16位值。我一直在网上搜寻,找不到太多的信息 您可能会发现一些API很有用: http://download.oracle.com/javase/6/docs/api/java/lang/Integer.html#parseInt(java.lang.String,int) 我想这是个家庭作业问题。因此,我将为您提供可以帮助您解决问题的信息,而不是解决方案 将数字转换为十六

需要一个关于如何执行以下操作的解决方案:接收十进制值,将其转换为32位十六进制,然后分离该32位十六进制,并获得高16位和低16位值。我一直在网上搜寻,找不到太多的信息

您可能会发现一些API很有用: http://download.oracle.com/javase/6/docs/api/java/lang/Integer.html#parseInt(java.lang.String,int)
我想这是个家庭作业问题。因此,我将为您提供可以帮助您解决问题的信息,而不是解决方案

  • 将数字转换为十六进制。这可以通过Integer的
    toHexString()
    方法完成
  • 在左侧添加足够的零,使其长度为8个字符(8个十六进制字符表示32位)。你可以通过在循环中一个接一个地添加零,直到它有8个字符长,或者(更好的方法)只在左边添加7个零,只处理最右边的8个字符
  • 取最右边的4个字符作为较低的16位,紧靠左边的4个字符作为较高的16位。这可以通过字符串的
    substring()
    方法以及
    length()
    和一些简单的减法来完成

  • 不确定为什么要转换为十六进制,但要将32位值直接转换为两个16位值

    int x = ...
    short high = x >> 16;
    short low = x & 0xFFFF;
    

    这听起来像是一个家庭作业问题。如果我是你的话,我会先编写转换为十六进制的例程。你是说Decimal类型的实例吗?还有,什么是32位十六进制?你是说你想要一个8位的十六进制字符串吗?我有一种明显的感觉,这可能是另一种情况,有人通过它的人类可读表示来引用一个值。通过说“32位十六进制”,您实际上是指32位整数,还是这样一个整数的字符串表示形式?您需要更清楚地定义问题空间。“接收十进制值”-这是非整数吗?如果是这样,业务逻辑规定了什么策略来将非整数值转换为整数值?hex和这有什么关系?一个值和它的表示之间有一个重要的区别。当人们用“业务逻辑”这个术语来描述一些可能与业务无关的东西时,我总是觉得很有趣。好像所有的节目都是关于商业的。它的科学发生了什么?嗨,Kindall,toHexString方法将转换为16位十六进制,这不是必需的。例如:32位十六进制表示10000=461C4000,toHexString表示2710。加上零会得到00002710。我觉得很好。10000的十六进制肯定不是461C4000!它是,以32位表示。2710是16位的。参考点:等等。。。你想要一个与浮点值相等的十六进制值,但你不想费心这么说吗?啊。。。你为什么要把它从你原来的问题中去掉呢?好吧,在我的例子中,它不是一个浮点,而是一个十进制。我能够产生这个十六进制表示。获取高16位和低16位-是否只是将结果表示拆分为两个子字符串?