java学习笔记:字符的编码与解码练习

本文通过实例演示了如何在Java中进行字符串与字节数组之间的转换,并探讨了不同字符编码如UTF-8与GBK在编码过程中的差异及解码时可能出现的问题。

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

编码:字符串转成字符数组

解码:字节数组转成字符串

 

String类中的字段,charsetName:编码字符集
String -> byte[]     Str.getBytes(charsetName)
byte[] -> String     new String(byte[] b,charsetName)  
 

我们用UTF-8将"你"编码后,返回的字节数值是-28, -67, -96,
十进制:-28  二进制是:11100100   十六进制:E4   对应无符号整数:228
           -67                10111101                BD                         189
           -96                10100000                A0                         160
      
"你"的UTF-8码是 E4 BD A0  
"浣"的GBK  码是  E4 BD
最后的A0 解码后是"?",是不可识别的字符

所以如果我们将字符"你"使用UTF-8编码,用默认的GBK解码,打印的是字符"浣?"

 

 

[示例]:字符编码解码练习

 

import java.util.*;
class Demo            
{
  public static void main(String[] args) throws Exception
  {
    String str = "你";
    byte[] b1 =str.getBytes("UTF-8");  //编码
    String sopStr =Arrays.toString(b1);//返回指定数组内容的字符串表示形式
    sop(sopStr); //[-28, -67, -96]
        
    String s1 = new String(b1);   //解码,使用平台的默认字符集解码指定的 byte 数组
    sop("s1:"+s1);                      //"浣" , 由于默认是GBK解码,所以打印"浣"
    
    String s2 = new String(b1,"UTF-8");
    sop("s2:"+s2);                      //"你"  ,UTF-8解码打印"你"
    
    //如果我们将"你"解码错了,本来要使用UTF-8解码,误用"iso8859-1"解码了
    //由于西欧字符集与中文系统不兼容,我们用"iso8859-1"解码出来的是乱码
    String  errStr = new String(b1,"iso8859-1");  
    sop("errStr:"+errStr); //"???",  解码错误,乱码
    
    byte[] bErr = errStr.getBytes("iso8859-1"); //返炉重编
    sop(new String(bErr,"UTF-8"));//"你",解码成功
    
//注意:这种方法不适合于相同的字符体系
//因为当用GBK解码UTF-8没找到字符时,它会到备用字符集中区找,返回的字符是走样的
//不是原来的"你"的值了,用getBytes方法重新编码只会得到乱码    
  }
    
  public static void sop(Object obj) //打印
  {
    System.out.println(obj);
  }
}

 

内容概要:本文档详细介绍了一个基于MATLAB实现的跨尺度注意力机制(CSA)结合Transformer编码器的多变量时间序列预测项目。项目旨在精准捕捉多尺度时间序列特征,提升多变量时间序列的预测性能,降低模型计算复杂度训练时间,增强模型的解释性和可视化能力。通过跨尺度注意力机制,模型可以同时捕获局部细节和全局趋势,显著提升预测精度和泛化能力。文档还探讨了项目面临的挑战,如多尺度特征融合、多变量复杂依赖关系、计算资源瓶颈等问题,并提出了相应的解决方案。此外,项目模型架构包括跨尺度注意力机制模块、Transformer编码器层和输出预测层,文档最后提供了部分MATLAB代码示例。 适合人群:具备一定编程基础,尤其是熟悉MATLAB和深度学习的科研人员、工程师和研究生。 使用场景及目标:①需要处理多变量、多尺度时间序列数据的研究和应用场景,如金融市场分析、气象预测、工业设备监控、交通流量预测等;②希望深入了解跨尺度注意力机制和Transformer编码器在时间序列预测中的应用;③希望通过MATLAB实现高效的多变量时间序列预测模型,提升预测精度和模型解释性。 其他说明:此项目不仅提供了一种新的技术路径来处理复杂的时间序列数据,还推动了多领域多变量时间序列应用的创新。文档中的代码示例和详细的模型描述有助于读者快速理解和复现该项目,促进学术和技术交流。建议读者在实践中结合自己的数据集进行调试和优化,以达到最佳的预测效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值