首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java序列化-一个字符的字节数?

Java序列化-一个字符的字节数?
EN

Stack Overflow用户
提问于 2014-10-25 12:54:47
回答 2查看 1.8K关注 0票数 0

我在Java中有字符串对象,我正在序列化这些对象。现在,我想知道字符串中每个序列化字符的大小。

标准英文字母(例如“a”或“G”)只需要1或2个字节,特殊符号如逗号或感叹号只需要8个字节,是真的吗?

但是,在序列化字符串中,需要多少字节才能使用数字符号(0-9)?

编辑:我以下列方式进行序列化:

代码语言:javascript
复制
socket = new Socket(host, port);
ObjectOutputStream outputStream = new ObjectOutputStream(new BufferedOutputStream(socket.getOutputStream()));
outputStream.writeObject(request);
outputStream.flush();

反序列化使用ObjectInputStream以类似的方式进行。

要序列化(请求)的对象包含一个类型为String的字段,该字段可以是"aaaa“或"aAaA”或"a0A3a5“等(即大小写字母和数字)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-25 13:43:36

您使用JAVA序列化,因此它符合http://docs.oracle.com/javase/6/docs/platform/serialization/spec/protocol.html

字符串对象的表示由长度信息和修改后的UTF-8编码的字符串内容组成。修改后的UTF-8编码与JavaTM虚拟机以及java.io.DataInput和DataOutput接口中使用的编码相同;它在表示补充字符和空字符方面与标准UTF-8不同。长度信息的形式取决于修改后的UTF-8编码中字符串的长度。如果对给定字符串的修改后的UTF-8编码长度小于65536字节,则长度被写入为两个字节,表示一个无符号16位整数。从JavaTM 2平台标准版v1.3开始,如果修改后的UTF-8编码中字符串的长度为65536字节或更长,则长度以8个字节编写,表示一个有符号的64位整数。序列化流中字符串前面的类型代码指示用于写入字符串的格式。

字符串被序列化为UTF-8,因此ASCII字符被编码为1字节,而数字是ASCII,是的,它们被编码为1字节。

有关进一步信息,请参见http://en.wikipedia.org/wiki/UTF-8

票数 2
EN

Stack Overflow用户

发布于 2014-10-25 17:31:19

ObjectOutputStream是设计用来编写对象的。一个字符大约需要78个字节。如果你想把一个字符写成两个字节,你可以使用DataOutputStream writeChar或者如果你想使用一个字节,你可以写(Ch);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26562605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档