在Java中,如果我有一个字符串x,我如何计算该字符串中的字节数?
当前回答
根据如何在Java中转换字符串和UTF8字节数组:
String s = "some text here";
byte[] b = s.getBytes("UTF-8");
System.out.println(b.length);
其他回答
要避免try catch,请使用:
String s = "some text here";
byte[] b = s.getBytes(StandardCharsets.UTF_8);
System.out.println(b.length);
迂腐的答案(虽然不一定是最有用的答案,这取决于你想对结果做什么)是:
string.length() * 2
Java字符串物理存储在UTF-16BE编码中,每个代码单元使用2个字节,而String.length()以UTF-16代码单元测量长度,因此这相当于:
final byte[] utf16Bytes= string.getBytes("UTF-16BE");
System.out.println(utf16Bytes.length);
这将告诉你内部char数组的大小,单位是字节。
注意:“UTF-16”将给出与“UTF-16BE”不同的结果,因为前者编码将插入一个BOM,将数组长度增加2个字节。
有一个叫做getBytes()的方法。明智地使用它。
试试这个:
Bytes.toBytes(x).length
假设你之前声明并初始化了x
尝试使用apache commons:
String src = "Hello"; //This will work with any serialisable object
System.out.println(
"Object Size:" + SerializationUtils.serialize((Serializable) src).length)
推荐文章
- 在流中使用Java 8 foreach循环移动到下一项
- 访问限制:'Application'类型不是API(必需库rt.jar的限制)
- 用Java计算两个日期之间的天数
- 如何配置slf4j-simple
- Printf与std::字符串?
- 在Jar文件中运行类
- 带参数的可运行?
- 不区分大小写的“in”
- 我如何得到一个字符串的前n个字符而不检查大小或出界?
- 我可以在Java中设置enum起始值吗?
- Java中的回调函数
- 如何在PHP中截断字符串最接近于一定数量的字符?
- c#和Java中的泛型有什么不同?和模板在c++ ?
- 在Java中,流相对于循环的优势是什么?
- Jersey在未找到InjectionManagerFactory时停止工作