I'm going to gout on a limb here and say 144 is beyond the value of a byte?
Recently, in my company we were working on a program that reads a barcode value and decodes it, we run our program on two platforms, one for linux and one for windows and we noticed something strange. The barcode we were reading is referred to using hex values and as such we had one with the hexvalue of 0x81 .. of course 81 is beyond the limits of a byte and will be a negative value in byte which is fine..
The strange thing is how a byte is read by a
String class. In Windows the value we entered returned as 63 or a "?" and in Linux it returned as blank. This really only happened after we convert the byte array into a string as we tested the byte array and the values are correct, though negative for values exceeding 127.
In short, negative byte values do not get translated correctly when passed into a String. I think this has to do with the fact that the ascii chart generally reaches to 127 and anything beyond that is platform dependent? Occasionally with negative byte values i get some weird Strings not in the standard ascii char set.
What you can perhaps do is before using it as a hash key is to convert it into a positive short or int value.. thats what we did and might not be the best way to do it
I hope this helps.
Regards
p/s : Sorry if i am not clear, i'm hopeless in explaining things...

[ September 22, 2006: Message edited by: Darren Cheong ]