如何以big endian顺序获取64位(而不是字节)的String大小? 我从来没有用Java做过这种操作。感谢您的帮助:)。
答案 0 :(得分:3)
我想你想要这个:
String source = "0123456789";
byte[] byteArray = source.getBytes("UTF-16BE");
int sizeInBits = byteArray.length * 8;
答案 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);