如何获得Java的大小

时间:2012-07-06 18:21:03

标签: java string size endianness

如何以big endian顺序获取64位(而不是字节)的String大小? 我从来没有用Java做过这种操作。感谢您的帮助:)。

3 个答案:

答案 0 :(得分:3)

我想你想要这个:

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

来源:Why does byteArray have a length of 22 instead of 20?

答案 1 :(得分:1)

嗯?字符串只能以字符或字节为单位进行测量,并且只能在为编码指定特定字符集时进行测量。

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

如果我们知道你真正想要做什么,这可能会有所帮助。

答案 2 :(得分:0)

即使像x86这样的平台使用LittleEndian,Java也始终在内部使用BigEndian命令。

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

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

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

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

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

DataOutputStream out = new DataOutputStream(streamToWriteTo);
out.writeLong(charCount);