-2
最近我在代码中发现一些隐藏在Java字符串中的负字节,导致.equals字符串比较失败。Java字符串中负字节值的意义是什么?
字符串中负字节值的含义是什么?他们能代表什么吗?在任何情况下,String中的负数字节值都可以解释为任何东西?我很喜欢这个编码业务,所以如果需要对不同的编码方案进行解释,请不要犹豫。
最近我在代码中发现一些隐藏在Java字符串中的负字节,导致.equals字符串比较失败。Java字符串中负字节值的意义是什么?
字符串中负字节值的含义是什么?他们能代表什么吗?在任何情况下,String中的负数字节值都可以解释为任何东西?我很喜欢这个编码业务,所以如果需要对不同的编码方案进行解释,请不要犹豫。
Java字符串包含字符,但是您可以用不同的方式解释它们。如果每个字符都是一个字节,则它的范围可以从0-255,包括0和255。这是8位。
现在,最左边的位可以被解释为一个符号位或作为字符大小的一部分。如果该位被解释为符号位,那么您将拥有从-128到+127(含)的数据项。
您没有发布用于打印字符的代码,但是如果您使用将字符解释为有符号数据项的逻辑,那么您将在输出中得到负数。
Java字节已签名。 –
是什么让你认为这是造成等值比较失败?更重要的是,Java字符串是由字符组成的,而不是字节。 –
当你谈论Java字符串中的字节时,你是什么意思? Java字符串由无符号的16位字符构成。 – user2357112