Converter Segundos em Latitude

Galera,

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.

Alguem poderia me ajudar?

Att

Completamente chutando no ar… isso está em segundos ou em milésimas de segundos?

Se for em milésimos poderá (obviamente não tenho a certeza que não sei o que esses dados realmente significam) ser assim:

42867543 mod 1000 = 543 :arrow: 543 milésimos de segundo
42867543/1000 = 42867
42867 mod 60 = 27 :arrow: 27 segundos
42867 / 60 = 714
714 mod 60 = 54 :arrow: 54 minutos
714 / 60 = 11 :arrow: 11 graus

Isso seria então 11º 54’ 27.543’’

Entao,

So que os dados do equipamento chega em centessimo de segundos ai eu divido por 100 para chegar nos segundos.
A informação chega em HEX.

FF82AE23 :arrow: 4286754339
4286754339 / 100 :arrow: 42867543

De acordo com o manual, de onde eu tirei esse dados as coordenada deveria ser essa:
FF82AE23 :arrow: 22.813769°

uso o seguinte metodo para converter de Hex para String

static String hexToBin(String s) {
        return new BigInteger(s, 16).toString();
    }

E não diz como chegar a esse valor?

Sim,

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.

Att

A conversão de hex para decimal está correcta.

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.

Neste caso concreto

FF82AE23 :arrow: 11111111100000101010111000100011

Como o bit mais significativo é 1, invertem-se os bits: 00000000011111010101000111011100 e soma-se 1

00000000011111010101000111011101 :arrow: 8212957

8212957 / 360000 = 22,81376944

pmlm,

Valeu pela ajuda, so que estou com outro probleminha.

Sei que a duvida é meia riducula, mas como vc fez para inverter os bits?

Att

Em cima do joelho:

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);

Meu Filho de Deus,

Valeu pela ajuda!!!
Tem hora que vc fica meio perdido. Esse projeto ja esta atrasado e eu preciso finalizar para poder receber.

Inte

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)

Amigo,

Qual o modelo do seu equipamento que esta usando?
Voce tem alguma documentação online que podemos dar uma olhada?

Att