Não estou sabendo como resolver isso. Preciso converter os segundos que vem do equipamento de rastreamento em Latitude e Longitude.
Por exemplo a Latitude vem assim 42867543 preciso transformar em decimal latitude.
Mas olha para vc ver o valor em HEX que te mostrei.
Esse valor em Hex tem que gerar a seguinte latitude: 22.813769.
Ate ai blza, no seu exemplo deu para entender como é feito.
Agora eu nao sei o que é , se é metodo que esta gerando de hex para string errado.
A minha conversão foi um chute para o ar, se o valor que dá é diferente é porque a minha conversão não é a que eles usam.
Pegando na minha conversão e assumindo como dizes que 42867543 são os segundos, também não dá. Logo 42867543 não devem ser ainda os segundos.
De uma pesquisa rápida encontrei o que deve ser o algoritmo:
Tens de converter para binário.
Se o bit mais significativo for 1, tens de fazer complemento de 2 e depois divides por 100 (as tais centésimas) e divides por 3600 (60min*60seg) e tens os graus
Senão basta fazer logo as divisões.
Esse trabalho todo é pq tenho que pegar as infoirmações de equipamentos de rastreamento da Magneti Marelli, o T-Box. Cara, é um saco esse negocio, e String de comnuicação vem toda em hex e vc ainda tem que ficar quebrando isso.
é um trabalho do cão.
Na documentação esta escrito assim:
Latitude in hundredth of seconds. South latitude will
return a negative value and this number should be
converted using 2?s complement.
O ponto em negrito que não entendi muito bem. as vezes pode ser esse ponto que esta avacalhando.
String hex = "FF82AE23";
BigInteger number = new BigInteger(hex, 16);
char[] bits = number.toString(2).toCharArray();
if (bits[0]=='1'){
for (int i = 0; i<bits.length; i++){
if (bits[i] == '0'){
bits[i] = '1';
} else {
bits[i] = '0';
}
}
String newString = new String(bits);
number = new BigInteger(newString,2);
number = number.add(BigInteger.ONE);
}
BigDecimal result = new BigDecimal(number).divide(new BigDecimal("360000"), 6, RoundingMode.DOWN);
System.out.println(result);
Amigo recibo essa string do gerador. Saberia me dizer como faço para transformar em latitude e longitude, acho que isso esta
vindo em milesegundou ou centesimos
nao tenho certeza,
qualquer ajuda é bem vinda.
imei:013226001446372,tracker,1302171008,011980563897,F,130854.000,A,2256.9480,S,04632.2735,W,0.00,; from 201.23.162.64(1544)