Dúvida em relação à bytes de uma String

4 respostas
das_iommi

Olá a todos!

Estou fazendo um código que lê uma string (uma mensagem qualquer), pega os bytes dessa mensagem, e retorna a soma deles através de um foreach ("for ( : )" em JAVA).
Fiz exatamente esse códio em C# e o resultado saiu exatamente como eu queria, mas em JAVA sai errado, o resultado sai totalmente diferente, com númros negativos.

Código feito em C#:
private string byteMessage(string message)
        {
            byte[] bMsg = System.Text.ASCIIEncoding.ASCII.GetBytes(message);
            byte checkBytes = 0;

            foreach (byte aB in bMsg)
            {
                checkBytes += aB;
            }

            return checkBytes.ToString("D3");
        }
Código feito em JAVA:
private String byteMessage(String message)
    {
        byte[] byteMsg = message.getBytes();
        byte chkBytes = 0;
        
        for (byte ab : byteMsg)
        {
            chkBytes += ab;
        }
		
        return String.valueOf(chkBytes);
    }

Alguem sabe a solução pra este problema? Se houver solução, gostaria que o JAVA só retornasse 3 dígitos, tem como?

Obrigado desde já!

4 Respostas

T
private String byteMessage(String message) {  
         byte[] byteMsg = message.getBytes();  
         int chkBytes = 0;  
           
         for (byte ab : byteMsg) {  
             chkBytes += (ab & 0xFF);  
         }  
           
         return String.valueOf(chkBytes & 0xFF);  
     }
das_iommi

thingol, Obrigado! Funcionou perfeitamante!

Uma outra dúvida é: como faço para exibir apenas 3 dígitos, como no C#: variavel.ToString(“D3”); ???

Valew!

T
int valor = 23;
String str = String.format ("%03d", valor); // str recebe "023"
str = String.format ("%3d", valor); // str recebe " 23" (note o espaço à esquerda)
das_iommi

valewww! Era isso mesmo que eu precisava!

Obrigado!

Criado 23 de junho de 2009
Ultima resposta 23 de jun. de 2009
Respostas 4
Participantes 2