아마도 그럴 거라고(new String(b)).getBytes().equals(b),实际上并非如此。(尽管new String(s.getBytes()).equals(s)생각하실 겁니다. )
Becausebyte[]转换成String时,有些字节是未必能转换成字符的,比如第一个-106、第二个-85就是,所以转换成String时前两个就变成了未知字符(表面上会显示?,但实际上是一个Unicode字符),再转成byte[](你这边defaultCharset应该是UTF-8) 각각의 알 수 없는 문자는 3바이트가 됩니다.
GBK를 사용하는 경우 상황은 나쁘지 않지만 여전히 약간 다릅니다.
으아아아
결론은 다음과 같습니다. 해시 값을 표현하기 위해 문자열을 사용하는 경우 byte[]를 문자열로 강제 변환할 수는 없지만 평소대로 16진수 표현으로 변환합니다.
아마도 그럴 거라고
(new String(b)).getBytes().equals(b)
,实际上并非如此。(尽管new String(s.getBytes()).equals(s)
생각하실 겁니다. )Because
byte[]
转换成String
时,有些字节是未必能转换成字符的,比如第一个-106
、第二个-85
就是,所以转换成String
时前两个就变成了未知字符(表面上会显示?
,但实际上是一个Unicode字符),再转成byte[]
(你这边defaultCharset
应该是UTF-8
) 각각의 알 수 없는 문자는 3바이트가 됩니다.GBK를 사용하는 경우 상황은 나쁘지 않지만 여전히 약간 다릅니다.
으아아아결론은 다음과 같습니다. 해시 값을 표현하기 위해 문자열을 사용하는 경우 byte[]를 문자열로 강제 변환할 수는 없지만 평소대로 16진수 표현으로 변환합니다.