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

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#:

[code]
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");
    }[/code]

Código feito em JAVA:

[code]private String byteMessage(String message)
{
byte[] byteMsg = message.getBytes();
byte chkBytes = 0;

    for (byte ab : byteMsg)
    {
        chkBytes += ab;
    }
	
    return String.valueOf(chkBytes);
}[/code]

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á!

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

thingol, Obrigado! Funcionou perfeitamante!

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

Valew!

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)

valewww! Era isso mesmo que eu precisava!

Obrigado!