Separar int de string com getByte();?

4 respostas
D

Galera, podem me ajudar novamente, tanhoa seguitnte situação!!

tenho uma varável que recebe um o valore abaixo?

preciso pegar a letra e depois verificar se for “K” pega os números e soma 00 se for “M” pega o número antes e multiplica por 1024, a dúvida é como pego as letras e os números separadamente, estou usando o getBytes(), mas não está me rotornando o que desejo, alguém pode me dar uma ajuda?

Meu código, esse método recebe o valor por exemplo 128K

public String ValidaVelocidadeCIR( String velocidadeAB){

byte dadosAB[] = getBytes(velocidadeAB);
				
   for(int b = 0; b < dadosAB.length; b++){
    int valAB = dadosAB[b];
    System.out.println(valAB);
  }
return null;
}
public static byte[] getBytes(String s) {
    if (s == null) {
          return null;
    }try{
          return s.getBytes("iso-8859-1");		
     }catch (UnsupportedEncodingException e) {
           e.printStackTrace();			
           throw new IllegalStateException(e.getMessage());
      }
}

O System.out.println(valAB); está imprimindo 564875, mas o valor de entrada foi 80K! :?:

4 Respostas

Rafael_Steil

Cara… esse uso de getBytes() foi uma das coisas mais aleatorias que ja vi na vida :mrgreen:

Enfim…

Vc pode resolver isso facilmente com expressoes regulares:

String s = "120K";
Pattern p = Pattern.compile("([0-9]+)(K|KB|M|MB)");
Matcher m = p.macher(s);

if (m.find()) {
    int numero = Integer.parseInt(m.group(1));
    String tipo = m.group(2);

    if ("K".equals(tipo) || "KB".equals(tipo)) {
        int total = numero * 1024;
    }
    else .....
}

Rafael

T

Credo, getBytes não é para fazer isso que você quer fazer. Você pode fazer isso assim:

class TestK {
    public static long bytes (String str) {
        if (str.endsWith ("K")) {
            return 1024 * Long.parseLong (str.substring (0, str.length() - 1));
        } else if (str.endsWith ("M")) {
            return 1024 * 1024 * Long.parseLong (str.substring (0, str.length() - 1));
        } else {
            return Long.parseLong (str);
        }
    }
    
    public static void main(String[] args) {
        String teste1 = "128K";
        String teste2 = "12M";
        String teste3 = "100";
        
        System.out.println (bytes (teste1));
        System.out.println (bytes (teste2));
        System.out.println (bytes (teste3));
    }
}
D

Caraca, show de bola, até fiz igual ao seu thingol, antes de fazer vou perguntar da próxima…valeu tb Rafa…

Um abração!! :thumbup:

_fs

Não faça isso hehe sério. Estudar antes de tentar fazer ok, mas perguntar antes de procurar é ruim :smiley:

Criado 10 de agosto de 2005
Ultima resposta 10 de ago. de 2005
Respostas 4
Participantes 4