如何转换两个8位十进制数字以形成字母或字母数字代码

时间:2014-03-14 12:34:50

标签: java android google-maps

我是android的新手,我开始使用地图和

我的情况是:每当我在地图中放置一个标记时,它应该根据其纬度和经度(可能是字母数字)为该地点生成代码(如密码)

我的问题是:当我从一个地方取得刻度和经度(例如:12.828435,80.218367)时,我应该将它们转换为可能的最小字母数字代码并显示给用户(例如:abcd4frt)

我不知道这个想法是否可以按照我上面描述的方式实施。

请告诉我你的想法

1 个答案:

答案 0 :(得分:4)

此答案假定纬度和经度表示为8位小数。

以下内容将您的经度编码为36:

//convert longitude to an int, depending on what form it's in

String encodedLongitude = Integer.toString(longitude, 36);

这将解码它:

int longitude = Integer.valueOf(encodedLongitude, 36);

//convert longitude back to decimal.

要将它们连接在一起,您可以使用任何非字母数字分隔符。你不能只是将它们塞在彼此旁边,因为编码的字符串并不总是相同的长度。

或者你可以说:

long longLat = latitude + longitude * Math.pow(10, 8); //shift the longitude 8 places, and add to latitude

String encodedLongLat = Long.toString(longLat, 36);

然后解码:

long longLat = Long.valueOf(encodedLongLat, 36);

long longitude = longLat / Math.pow(10, 8);
long latitude = longLat % Math.pow(10, 8);