为什么 Java 中的 DataInput 接口没有 readUnsignedInt 方法
Why DataInput interface in Java doesn't have readUnsignedInt method
Java 不支持无符号整数类型,在 Java 中表示无符号整数的最简单方法是使用更大的整数类型。
DataInput 接口确实提供了读取无符号整数类型的方法 - readUnsignedByte
,returns short
和 readUnsignedShort
,returns [=14] =].
为什么这个接口没有 readUnsignedInt
方法 return long
?有什么特别的原因吗?
澄清: 我知道 Java 8 支持无符号算术。问题不是如何处理这个问题,而是为什么DataInput
接口没有这样的方法。
我不知道为什么,但这不再是问题,因为现在支持无符号整数。你可以做到
long a = Integer.toUnsignedLong(r.readInt());
DataInput/DataOutput 每个基元和字符串都有一个方法。
unsigned int
不是原语,但您可以在添加后执行以下操作。
long a = dis.readInt() & 0xFFFF_FFFFL;
dos.writeInt((int) a);
Why this interface doesn't have a readUnsignedInt method that would return long?
我假设最初的设计者认为您不需要一个,否则他们会添加一个 unsigned int
类型。
Is there any particular reason?
你可以添加很多东西(我在我的库中添加了因为我认为它们很有用)但设计师似乎相信少即是多。
Java 不支持无符号整数类型,在 Java 中表示无符号整数的最简单方法是使用更大的整数类型。
DataInput 接口确实提供了读取无符号整数类型的方法 - readUnsignedByte
,returns short
和 readUnsignedShort
,returns [=14] =].
为什么这个接口没有 readUnsignedInt
方法 return long
?有什么特别的原因吗?
澄清: 我知道 Java 8 支持无符号算术。问题不是如何处理这个问题,而是为什么DataInput
接口没有这样的方法。
我不知道为什么,但这不再是问题,因为现在支持无符号整数。你可以做到
long a = Integer.toUnsignedLong(r.readInt());
DataInput/DataOutput 每个基元和字符串都有一个方法。
unsigned int
不是原语,但您可以在添加后执行以下操作。
long a = dis.readInt() & 0xFFFF_FFFFL;
dos.writeInt((int) a);
Why this interface doesn't have a readUnsignedInt method that would return long?
我假设最初的设计者认为您不需要一个,否则他们会添加一个 unsigned int
类型。
Is there any particular reason?
你可以添加很多东西(我在我的库中添加了因为我认为它们很有用)但设计师似乎相信少即是多。