-1

如何以大端顺序获取 64 位(不是字节)的字符串大小)?我从来没有在Java中做过这种操作。谢谢你的帮助 : )。

4

3 回答 3

4

我想你想要这个:

String source = "0123456789";
byte[] byteArray = source.getBytes("UTF-16BE");
int sizeInBits = byteArray.length * 8;

资料来源:为什么 byteArray 的长度是 22 而不是 20?

于 2012-07-06T18:23:58.587 回答
1

诶?字符串只能以字符或字节为单位进行测量,并且只有在您为编码指定特定字符集后才能进行测量。

对于后者,它只是string.getBytes(charset).length.

如果我们知道您实际上想要做什么,这可能会有所帮助。

于 2012-07-06T18:22:55.477 回答
0

即使像 x86 这样的平台使用 LittleEndian,Java 在内部也始终使用 BigEndian 顺序工作。

在 Java 中,64 位值存储在long数据类型中。

现在最后一个问题是你想要测量什么。在字符串中,您可以计算字符数,或使用指定编码(例如 UTF-8、UTF-16、ISO-8859-1、...)对其进行编码时字符串占用的字节数。

假设您想计算 String 中的字符数,并且希望将该数字作为 64 位数字,您可以使用以下代码:

String myString = "abcdefgh";
long charCount = myString.length;

如果要写入charCount文件或网络连接,可以使用 DataOutputStream 获取 BigEndian 表示:

DataOutputStream out = new DataOutputStream(streamToWriteTo);
out.writeLong(charCount);
于 2012-07-06T18:30:43.270 回答