- 浏览: 194116 次
- 性别:
- 来自: 广州
-
文章分类
最新评论
/*********************************************************************
* 创建人:Devilhand
* 创建时间:2010-9-8
* 说明: 编码和解码
********************************************************************/
将字符序列转换成字节序列的过程叫做编码
将字节反序列转换成字符序列的过程叫做解码
在C#中,字符默认都是Unicode码,即一个英文字符占两个字节,一个汉字也占两个字节
UTF是通用转换格式,一般用1-4个字节编码一个Unicode码。目前流行的UTF-8、UTF-16、UTF-32
下面是一个例子
* 创建人:Devilhand
* 创建时间:2010-9-8
* 说明: 编码和解码
********************************************************************/
将字符序列转换成字节序列的过程叫做编码
将字节反序列转换成字符序列的过程叫做解码
在C#中,字符默认都是Unicode码,即一个英文字符占两个字节,一个汉字也占两个字节
UTF是通用转换格式,一般用1-4个字节编码一个Unicode码。目前流行的UTF-8、UTF-16、UTF-32
//命名空间 using System.Text; //获取所有编码的名称和描述 private void BindCodeType() { EncodingInfo[] enCodingInfo = Encoding.GetEncodings(); foreach (EncodingInfo ei in enCodingInfo) { Encoding en = ei.GetEncoding(); comboBox1.Items.Add(string.Format("{0}[{1}]", en.HeaderName , en.EncodingName)); } comboBox1.SelectedIndex = comboBox1.FindString("gb2312"); } //获取指定的编码的描述 private void GetEncode() { string edName = Encoding.GetEncoding("gb2312").EncodingName; MessageBox.Show(edName); } //不同编码之间的转换 private void ConvertCode() { string str = "猜猜我是谁"; Byte[] unicodeBytes = Encoding.Unicode.GetBytes(str); Byte[] utf8Bytes=Encoding.Convert (Encoding.Unicode ,Encoding.UTF8 ,unicodeBytes); string result = Encoding.UTF8.GetString(utf8Bytes); MessageBox.Show(result); } //当网络传输时,如果数据量较大,需要将其分开传输。如果直接使用Encoding类的GetBytes()方法,可能会出现一个数据快的末尾是一个高代理项,而与其对应的低代理项在下一个数据块中。此时,使用Encoder类可以很好地解决这个问题。 //Encoder类的构造函数是Protected的,所以不能直接实例化Encoder对象,而要通过Encoding类的GetEncoder()方法类实例化对象 //创建Encoder的实例(如UTF-8编码) Encoder ed = Encoding.UTF8.GetEncoder(); //Encoder对象的GetBytes()方法(编码) //Encoder对象的GetByteCount()方法获取字符数组序列化后得到的字节数组的长度 private byte[] EncoderGetBytes(string str) { char[] chars = str.ToCharArray(); Encoder ed = Encoding.UTF8.GetEncoder(); Byte[] bytes = new Byte[ed.GetByteCount(chars, 0, chars.Length, true)]; ed.GetBytes(chars, 0, chars.Length, bytes, 0, true); return bytes; } //Decoder对象GetChars()方法 //Decoder对象的GetCharCount()方法获取字节数组反序列化后得到的字符数组的长度 private string DecoderGetChars(Byte[] bytes) { Decoder dd = Encoding.UTF8.GetDecoder(); char[] chars = new char[dd.GetCharCount(bytes, 0, bytes.Length, true)]; dd.GetChars(bytes, 0, bytes.Length, chars, 0, true); StringBuilder sb = new StringBuilder(100); foreach (char c in chars ) { sb.Append(c); } return sb.ToString(); }
下面是一个例子
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace 编码和解码 { public partial class EncodeAndDecode : Form { private string codeType = null;//编码类型 Byte[] bytes;//字节数组 public EncodeAndDecode() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { MyEncode(); MyDecode(); } private void Form1_Load(object sender, EventArgs e) { textBox1.Text = "猜猜我是谁?"; textBox2.ReadOnly = textBox3.ReadOnly = true; BindCodeType(); } //获取所有编码的名称和描述 private void BindCodeType() { EncodingInfo[] enCodingInfo = Encoding.GetEncodings(); foreach (EncodingInfo ei in enCodingInfo) { Encoding en = ei.GetEncoding(); comboBox1.Items.Add(string.Format("{0}[{1}]", en.HeaderName, en.EncodingName)); } comboBox1.SelectedIndex = comboBox1.FindString("gb2312"); } //编码 private void MyEncode() { codeType = comboBox1.SelectedItem.ToString(); codeType = codeType.Substring(0, codeType.IndexOf('[')); Encoder ed = Encoding.GetEncoding(codeType).GetEncoder(); char[] chars = textBox1.Text.Trim().ToCharArray(); bytes = new Byte[ed.GetByteCount(chars, 0, chars.Length, true)]; ed.GetBytes(chars, 0, chars.Length, bytes, 0, true); textBox2.Text = Convert.ToBase64String(bytes); } //解码 private void MyDecode() { Decoder dd = Encoding.GetEncoding(codeType).GetDecoder(); //Decoder dd = Encoding.Default.GetDecoder(); char[] chars = new char[dd.GetCharCount(bytes, 0, bytes.Length, true)]; dd.GetChars(bytes, 0, bytes.Length, chars, 0, true); StringBuilder result = new StringBuilder(1000); foreach (char c in chars) { result.Append(c); } textBox3.Text = result.ToString(); } } }
发表评论
-
枚举类型帮助类 EnumHelper
2019-09-02 11:29 541项目中出现的问题: 项目中会有很多地方用到文字提醒,如果在每个 ... -
C# zip文件解压压缩帮助类
2019-08-30 11:43 609原文: https://www.cnblogs.com/sun ... -
使用ITextSharp对pdf文件打水印
2019-08-19 17:13 836在项目中需要对pdf文件中的部分信息进行遮挡隐藏,于是找到了I ... -
HMAC_SHA1加密
2019-08-16 10:36 1019hmacsha1在很多签名计算中都很常用了,这里对两种可能返回 ... -
.NET/java Office组件神器——Aspose.Total 17.x/18.x/19.x破解版+破解补丁下载【转】
2019-07-29 15:22 2770先上大神的网站地址: [url] https://masuit ... -
通过UserAgent判断智能手机(设备,Android,IOS)【转】
2019-07-02 17:51 1071///<summary> /// ... -
8000401a 因为配置标识不正确,系统无法开始服务器进程。请检查用户名和密码【转】
2019-06-12 17:36 2448服务器使用了word的类库,在使用过程中日志报标题错误 解决 ... -
C#(同步调用、异步调用、异步回调)--转
2019-06-05 12:04 731本文将主要通过“同步调用”、“异步调用”、“异步回调”三个示例 ... -
C# 利用word书签写入自定义数据
2019-05-14 18:08 668原文参考地址: https://www.cnblogs.com ... -
C# 项目中引用office组件后在服务器遇到的问题集锦
2019-02-13 16:03 9721、要在服务器安装相同版本的office完整版程序 本地测试机 ... -
C# word转pdf
2019-01-17 14:55 704写在最前面,如果要部署,服务器需要安装相同版本的office, ... -
C# 操作word
2019-01-17 14:49 542需要单独引入的是COM中的Microsoft Office 1 ... -
给上传的文件生成缩略图(图片和视频)
2018-11-28 17:47 899备注:里面用到的ffmpeg ... -
获取视频文件的截图
2018-11-28 17:36 744视频获取第一帧截图的方法: https://www.cnblo ... -
excel文件转为DataTable
2018-11-02 17:38 1620在人员初始化的时候,通常会用到excel编辑好,导入到数据库中 ... -
DataTable导出excel
2018-11-02 16:36 1165网上有很多关于导出的例子,这里讲一个利用NPOI导出excel ... -
未能加载文件或程序集,System.Net.Http或它的某一个依赖项。系统找不到指定的文件。
2018-10-30 17:21 4981具体的错误描述: 未能加载文件或程序集“System.Net. ... -
将app请求的简单json串转化为字典
2017-11-16 11:18 842通过Newtonsoft的DeserializeObject& ... -
WebAPI启用session功能
2017-11-16 11:04 1793第一步:简单建立两个类,以备修改WebApi的路由方式 第一 ... -
webapi记录请求和返回日志
2017-11-15 17:12 2183需求: 记录每个接口的请求参数及返回参数,方便以后回溯 fi ...
相关推荐
chromedriver-win64-136.0.7059.0.zip
python学习一些项目和资源
python学习资源
python学习资源
python学习教程
python学习教程
【毕业设计】java-springboot+vue会议管理系统实现源码(完整前后端+mysql+说明文档+LunW).zip
内有各个系统的版本全了
分数阶模型辨识,分数阶模型辨识
大数据基于python的电影天堂数据可视化(源码+配套文档) 系统功能: 登录 、首页 、电影数据管理 、我的信息 关键技术:Python、Django、Mysql、Hadoop、Scrapy、Vue、B/S 技术支持:已测试可正常运行,调试问题可联系客服有偿解决。 更多项目:3000+优质源码,支持【定制】、修改、部署、讲解和文档。
【毕业设计】java-springboot+vue疾病防控综合系统的设计与实现源码(完整前后端+mysql+说明文档+LunW).zip
【毕业设计】java-springboot-vue家具销售电商平台实现源码(完整前后端+mysql+说明文档+LunW).zip
134dfffffffffffffffffffffffffffffff
代码说明: 设置结束时间:通过new Date().getTime()获取当前时间戳,并加上10分钟的毫秒数(10 * 60 * 1000),得到倒计时的结束时间。 更新倒计时:updateCountdown函数计算当前时间与结束时间的差值,并将其转换为分钟和秒数。 显示倒计时:通过console.log输出剩余时间,格式为“剩余时间:X分Y秒”。 停止倒计时:当剩余时间小于或等于0时,清除定时器并输出“时间到!”。 定时器:使用setInterval每秒调用一次updateCountdown函数,实现倒计时的动态更新。 扩展说明: 应用场景:倒计时功能常用于限时抢购、考试计时、活动倒计时等场景。 优化建议:可以将倒计时显示在网页的某个元素中,而不是控制台。例如,使用document.getElementById获取DOM元素并更新其内容。 兼容性:该代码在现代浏览器中均可运行,如果需要兼容旧版浏览器,可以使用var代替const和let。 扩展功能:可以添加声音提示、动画效果等,提升用户体验。
该项目是一个大学生校园兼职平台。该平台使用Java语言开发后台业务逻辑,运用了SpringMVC+Spring+MyBatis框架进行搭建,前台使用jQuery、layUI框架,数据库服务器采用MySQL5.6+对数据进行持久化。其主要功能有:兼职招聘、论坛交流、在线聊天、个人中心、信箱留言、登录注册等功能。
图解AUTOSAR-CP-CommunicationStackTypes逻辑图打包
解释程序的逻辑和变量等等
python学习一些项目和资源
最近在基于大型语言模型(LLM)的多智能体系统(MAS)方面的发展展示了其在处理复杂决策任务方面的显著潜力。然而,现有的框架不可避免地依赖于串行执行范式,即智能体必须完成顺序的LLM规划后才能采取行动。这一基本限制严重影响了实时响应和适应能力,而在动态环境中这些能力至关重要。本文提出了一种新的并行化规划-行动框架,用于基于LLM的MAS,该框架具有可中断执行的双线程架构,支持并发规划和行动。具体而言,我们的框架包含两个核心线程:(1) 由集中式内存系统驱动的规划线程,保持环境状态同步和智能体通信以支持动态决策;以及 (2) 配备全面技能库的行动线程,通过递归分解实现自动化任务执行。在具有挑战性的《我的世界》实验中证明了所提框架的有效性。
基于layui和thinkphp6.0的快速后台开发框架。快速构建完善的管理后台,内置表单、表格的php生成,以及完善的RBAC权限管理