Java 获取特定字符串的二进制大小

Java 获取特定字符串的二进制大小,java,string,Java,String,如何以位(而非字节)为单位获取字符串的二进制大小(例如String s=“Ababa”) 用什么编码?字符串的特定二进制表示形式的位数仅为字节数*8: byte[] bytes = text.getBytes("UTF-8"); // Or whatever encoding you want int bits = bytes.length * 8; 我想我从来没有见过允许一个字节的分数的编码 请注意,如果您对UTF-16感兴趣,您可以使用text.length()*16,因为每个char都是

如何以位(而非字节)为单位获取字符串的二进制大小(例如String s=“Ababa”)

用什么编码?字符串的特定二进制表示形式的位数仅为字节数*8:

byte[] bytes = text.getBytes("UTF-8"); // Or whatever encoding you want
int bits = bytes.length * 8;
我想我从来没有见过允许一个字节的分数的编码


请注意,如果您对UTF-16感兴趣,您可以使用
text.length()*16
,因为每个
char
都是一个UTF-16代码单元。

获取字节,以8倍的倍数

"xxx".getBytes().length * 8;
编辑:与Jon Skeet的答案合并,指定编码也很重要,否则这将使用系统的默认编码返回大小,而这不一定是您想要知道的。要知道使用特定编码的大小,请使用:

 "xxx".getBytes(encoding).length * 8;

编码是“UTF-8”、“ASCII”或任何你想使用的东西。

嗨,Jon,Java字符串内部不是由两个字节字符表示的吗?@PabloSantaCruz:是的,但这有点不相关——或者至少,这不是OP要求的。罗伯特基拉:事实上,我的回答是在lxx之前(14:07:37 vs 14:08:25),这并不重要。选择更好的答案;无论哪种方式,一分钟都不重要。@Ixx:另一方面,它使用平台默认编码,而不是指定一种,这几乎总是错误的方法。我绝对不会使用那个代码。@Ixx:所谓“您应该设置一些编码”-您的意思是更改系统默认值?不,谢谢。每次我想使用编码时,我都希望是明确的。如果没有编码方面的知识,很难判断。也许能告诉我们更多关于你需要它做什么的信息?@RobertKilar,如果一个问题的回答时间是14分钟前,而另一个问题的回答时间是15分钟前,哪个答案更早?