Java中如何创建指定大小字节数的字符串

本文介绍如何在Java中创建具有指定字节数的字符串,并详细解释了使用byte数组和String构造函数的方法。此外,还解答了如何正确地将这种字符串写入文件以确保字节数一致的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java中如何创建指定大小字节数的字符串


如:想创建一个固定长度为12个字节的字符串如何创建呢.谢谢
更多
0
分享到:

对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
回复次数:14

qybao
    关注
    qybao
    qybao
    本版等级:T9
    Blank Blank

    
#1 得分:0 回复于: 2011-08-25 16:17:42
这个没法控制,自己判断字节数吧,或者字节写个字符串类
如果想创建12个字节的,空白字符串,可以用new String(byte[])构造函数
for example
byte[] b = new byte[12];
Arrays.fill(b, (byte)0x32);
String s = new String(b);
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理

selly0919
    关注
    selly0919
    selly0919
    本版等级:T2

    
#2 得分:0 回复于: 2011-08-25 16:18:37
想实现什么样的功能呢?
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理

yangting_lisa
    关注
    yangting_lisa
    小笨熊
    本版等级:T5

    
#3 得分:0 回复于: 2011-08-25 16:21:15
引用楼主 heqian0317 的回复:

    Java中如何创建指定大小字节数的字符串
    如:想创建一个固定长度为12个字节的字符串如何创建呢.谢谢



lz的字符串是指字符串数组?简单的一个String?
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理

zhaolewen
    关注
    zhaolewen
    zhaolewen
    本版等级:T2

    
#4 得分:0 回复于: 2011-08-25 16:25:35
java中提供有构造方法,String(byte[] bytes, Charset charset) ,用特定的字符集把字节数组解码成string字符串,在创建字节数组时只要保证为12个字节就行,但转换成的字符串不一定等于字节数组的长度
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理

heqian0317
    关注
    heqian0317
    heqian0317
    本版等级:T1

    
#5 得分:0 回复于: 2011-08-25 16:30:29
引用 3 楼 yangting_lisa 的回复:

    引用楼主 heqian0317 的回复:
    Java中如何创建指定大小字节数的字符串
    如:想创建一个固定长度为12个字节的字符串如何创建呢.谢谢


    lz的字符串是指字符串数组?简单的一个String?


我想直接创建这么多字节的字符串,当实际内容没这么时,里面的内容二进制补充为0
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理

qybao
    关注
    qybao
    qybao
    本版等级:T9
    Blank Blank

    
#6 得分:0 回复于: 2011-08-25 17:00:46
引用 5 楼 heqian0317 的回复:

    引用 3 楼 yangting_lisa 的回复:
    引用楼主 heqian0317 的回复:
    Java中如何创建指定大小字节数的字符串
    如:想创建一个固定长度为12个字节的字符串如何创建呢.谢谢


    lz的字符串是指字符串数组?简单的一个String?

    我想直接创建这么多字节的字符串,当实际内容没这么时,里面的内容二进制补充为0


for example
byte[] b = new byte[12];
Arrays.fill(b, (byte)0); //二进制0
String s = new String(b);
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理

heqian0317
    关注
    heqian0317
    heqian0317
    本版等级:T1

    
#7 得分:0 回复于: 2011-08-25 18:05:14
byte 不是一个字节的吗.我通过
byte[] b = new byte[12];String s = new String(b); outs.writeChars(s);
文件大小怎么是24个字节的呢
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理

luohuijun619
    关注
    luohuijun619
    luohuijun619
    本版等级:T6
    Blank

    
#8 得分:0 回复于: 2011-08-25 22:22:52
指定大小?用List不是更好吗
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理

heqian0317
    关注
    heqian0317
    heqian0317
    本版等级:T1

    
#9 得分:0 回复于: 2011-08-26 17:46:13
引用 6 楼 qybao 的回复:

    引用 5 楼 heqian0317 的回复:
    引用 3 楼 yangting_lisa 的回复:
    引用楼主 heqian0317 的回复:
    Java中如何创建指定大小字节数的字符串
    如:想创建一个固定长度为12个字节的字符串如何创建呢.谢谢


    lz的字符串是指字符串数组?简单的一个String?

    我想直接创建这么多字节的字符串,当实际内容没这么时,里面的内容二进制补充为0
    ……


这样好写在文件中是24字节的大小
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理

qybao
    关注
    qybao
    qybao
    本版等级:T9
    Blank Blank

    
#10 得分:0 回复于: 2011-08-26 19:38:13
outs.writeChars(s); 改成 outs.writeBytes(s);
按字节输出而不是按字符输出
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理

qybao
    关注
    qybao
    qybao
    本版等级:T9
    Blank Blank

    
#11 得分:30 回复于: 2011-08-26 19:40:16
javadoc里有说明

writeCharspublic final void writeChars(String s)
                      throws IOException将字符串按字符顺序写入基础输出流。通过 writeChar 方法将每个字符写入数据输出流。如果没有抛出异常,则计数器 written 增加 s 长度的两倍。

指定者:
接口 DataOutput 中的 writeChars
参数:
s - 要写入的 String 值。
抛出:
IOException - 如果发生 I/O 错误。
另请参见:
writeChar(int), FilterOutputStream.out




writeBytespublic final void writeBytes(String s)
                      throws IOException将字符串按字节顺序写出到基础输出流中。按顺序写出字符串中每个字符,丢弃其八个高位。如果没有抛出异常,则计数器 written 增加 s 的长度。

指定者:
接口 DataOutput 中的 writeBytes
参数:
s - 要写入的字节字符串。
抛出:
IOException - 如果发生 I/O 错误。
另请参见:
FilterOutputStream.out
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理

softroad
    关注
    softroad
    softroad
    本版等级:T7
    Blank

    
#12 得分:0 回复于: 2011-08-26 20:39:31
学习了。
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理

heqian0317
    关注
    heqian0317
    heqian0317
    本版等级:T1

    
#13 得分:0 回复于: 2011-08-29 09:47:07
谢谢噢.
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理

heqian0317
    关注
    heqian0317
    heqian0317
    本版等级:T1

    
#14 得分:0 回复于: 2011-08-29 10:40:11
引用 9 楼 heqian0317 的回复:

    引用 6 楼 qybao 的回复:
    引用 5 楼 heqian0317 的回复:
    引用 3 楼 yangting_lisa 的回复:
    引用楼主 heqian0317 的回复:
    Java中如何创建指定大小字节数的字符串
    如:想创建一个固定长度为12个字节的字符串如何创建呢.谢谢


    lz的字符串是指字符串数组?简单的一个String?

    我想直接创建这么多字节的字符串,当实际内容……


请问下又如何初始化我创建的数组里的内容呢.比如我一个手机号1371234567 想他输出的字节数占12个字节
### 如何在Java中计算字符串占用的字节数 为了确定字符串Java中的实际字节大小,可以利用`String`类的方法将其转换成指定字符集下的字节数组。具体来说,可以通过调用`getBytes()`方法来实现这一目标,并传入相应的字符编码名称作为参数[^1]。 ```java public class StringByteSizeExample { public static void main(String[] args) throws Exception { String exampleString = "Hello, world!"; // 使用UTF-8编码获取字节数组长度 int utf8Length = exampleString.getBytes("UTF-8").length; System.out.println("The length of \"" + exampleString + "\" in UTF-8 is: " + utf8Length); // 使用GBK编码获取字节数组长度 int gbkLength = exampleString.getBytes("GBK").length; System.out.println("The length of \"" + exampleString + "\" in GBK is: " + gbkLength); } } ``` 上述代码展示了两种不同字符编码下同一字符串所占有的字节数量差异。值得注意的是,在处理国际化应用时,选择合适的字符编码非常重要,因为不同的编码方式可能会导致相同的逻辑字符具有不同的物理表示形式和存储需求。 #### 字符串内部结构说明 在Java中,字符串是以Unicode字符序列的形式存在,这意味着即使是在内存中,每个字符也至少占据两个字节的空间(对于基本多文种平面内的字符)。然而,当涉及到外部传输或者持久化操作时,则通常会采用更紧凑高效的编码方案来进行数据交换或保存。 #### 处理异常情况 如果尝试使用的字符集不可用,那么`getBytes(String charsetName)`将会抛出`UnsupportedEncodingException`异常。因此建议总是捕获此类型的异常以确保程序能够优雅地应对潜在错误状况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值