【问题标题】:What is the significance of negative byte values in Java Strings?Java字符串中负字节值的意义是什么?
【发布时间】:2015-11-20 19:15:52
【问题描述】:

最近我发现一些负字节隐藏在我的代码中的 Java 字符串中,这导致 .equals 字符串比较失败。

字符串中的负字节值有什么意义?他们有什么意思吗?在任何情况下,字符串中的负字节值可以被解释为任何东西?我是这个编码业务的菜鸟,所以如果需要解释不同的编码方案,请随意。

【问题讨论】:

  • Java 字节已签名。
  • 是什么让您认为它导致相等比较失败?更重要的是,Java 字符串是由字符组成的,而不是字节。
  • 当你谈到字节在 Java 字符串中时,你的意思是什么? Java 字符串由无符号 16 位字符构成。
  • 使用 CompareTo 语句,您可以看到一个字符的值是多少。与“a”相比,空格之类的东西会返回一个负数。只是说...

标签: java string utf-8


【解决方案1】:

Java 字符串包含字符,但您可以用不同的方式解释它们。如果每个字符都是一个字节,那么它的范围可以是 0-255,包括 0-255。那是8位。

现在,最左边的位可以解释为符号位或字符大小的一部分。如果该位被解释为符号位,那么您将拥有范围从 -128 到 +127 的数据项。

您没有发布用于打印字符的代码,但如果您使用将字符解释为签名数据项的逻辑,那么您将在输出中得到负数。

【讨论】:

    猜你喜欢
    • 2011-09-10
    • 2012-05-25
    • 1970-01-01
    • 2018-05-02
    • 2014-03-12
    • 1970-01-01
    • 1970-01-01
    • 2020-06-06
    • 2022-01-21
    相关资源
    最近更新 更多