【发布时间】:2012-12-18 07:26:08
【问题描述】:
我有一个纬度值作为双精度值,我想对其执行按位与运算,然后进行位右移。以下是我的代码行:
pBuffer[1]=(latitude_decimal_degrees & 0xFF0000) >> 16;
然而,双精度值和整数值之间的位与运算是不可能的。我无法将纬度转换为 int,因为这不会产生准确的值。有人可以指导我吗?
编辑:我的要求基本上是将以下 vb.net 代码翻译成 java。原因:下面的代码行 (vb.net) 是用“Basic4Android”编写的用于 android 应用程序的方法的一部分。完全相同的方法将在我的 BlackBerry App 中实现。因此,我需要生成与下面完全相同的值,该值将在服务器端进行解码:
Dim pBuffer(11) As Int
Dim longitude_decimal_degrees As Double
pBuffer(1)=Bit.ShiftRight(Bit.And(latitude_decimal_degrees, 0xFF0000),16)
这几行代码怎么翻译成java?
【问题讨论】:
-
如果你描述你想要完成的事情会更好,而不是你认为你将如何完成它。
-
这看起来确实像an XY Problem。
-
@Perception 是对的:你实际上想做什么?这是不可能的,因为它没有意义。我们没有得到你想要的东西,应该怎么编译?你是否例如想得到双纬的整数部分?然后使用
round或floor。 -
如果您的
latitude是double值,并且可以将AND设置为0xFF0000,您基本上会丢失所有信息并且无法取回它。你知道吗?你能描述一下服务器预期的格式吗? -
归根结底,所有数据都是二进制的。我不知道您所说的十六进制编码是什么意思。二进制和十六进制是表示数字的系统。因此,每个二进制数都可以转换为十六进制数。但是,即使是十六进制数,也可以在任何计算机上以二进制形式存储。我们知道您有
latitude作为double值,但为了让我们帮助您,我们需要有关您将其转换为的格式的更多详细信息。
标签: java vb.net bit-manipulation bit-shift