【发布时间】:2011-11-10 12:46:55
【问题描述】:
如何在 Java 中生成 16 位无符号整数和 64 位无符号整数?这个问题与实施标准有关。我无法更改规范。
规范的其他相关部分。这个问题与:
- 最高有效位必须为 0。
- 必须以网络字节顺序表示。
应用程序上下文:数字(以任何一种形式)表示正在发送的数据的长度。长度可大可小。我首先发现要发送的消息的长度很长。
所以我开始:long length = getLength();
然后我需要将长变量“长度”转换为上述两个变量中的任何一个,具体取决于它有多大。最后,我很确定当我发送长度时我需要做一个.getBytes()。收件人将按上述方式进行解释。
【问题讨论】:
-
在 Java 中,
short强制要求为 16 位,long强制要求为 64 位。它们是带符号的类型,但您指定 msb 始终为 0,所以这无关紧要。这够了吗? -
“生产”是什么意思,您想将其作为二进制数据写入流吗?将其保留为“长长度”有什么问题?
-
是的。我必须将其写入流。我尝试发送长,但它没有工作。收件人哽咽。当其他已开发的发送者发送消息时,接收者似乎没有问题。为了清楚起见,我在我的问题中添加了一个句子。我无法更改规格。
-
@Roger:那么您需要包含有关您的应用程序产生的流的信息,与现有应用程序(有效)产生的流相比。
-
接收方如何知道您发送的两种表示中的哪一种?
标签: java type-conversion java-7 network-protocols primitive-types