你好,我要编一段码让字母转换化成ASCII码

一、为什么要进行编码和转码

由於每个国家电脑的字符编码格式不统一(列中国:GBK)同一款软件放到不同国家的电脑上会出现乱码的情况,出现这种情况如何解决呢! 当然由于所有国家的电脑都支持Unicode万国码,那么我们可以把Unicode为跳板先把字符编码转换为Unicode,在把Unicode转换为另一个国家的字符编码(例韩国)则不会出现乱码的情况。当然这里只是转编码集并不是翻译成韩文不要弄混了

① 声明字符编码(utf-8)
② 使用默认字符编码(ascii)

总结:Python2.x里默认字符编码为ascii,如果不声明编码格式则输入的字符格式都是ascii码(中文不在ascii里面,输入报错);如果要输入中文字符则需要声明编码格式,此时中文字符的编码格式不跟随默认字符编码格式而是与声明的编码格式一致(上面实例为utf-8),这些都需谨记

TCP/IP长连接自定义协议解析

下面是由終端发送到服务器端的一个自定义报文我们由这个自定义报文来解释和阐述整个全通信链条过程中的编解码;

发送方 终端数据采集中心

接收方 中心监控服务器

0x01表示字符编码方式;将使用设置的编码方式将字符串编码到 byte 序列采集器的序列号
交易流水号16进制的12DD205=(小端模式) 对数据包进行标识
时间,把日期转化为Unix时间,然后用四个字节表示

二、 自定义协议的数据定义

整个全链条包含了以下自定义的数据类型:如下阐述

string 1 "1芓节编码方式(ASCII、Unicode、UTF8等) + 1字节无符号字符串字节数 +变长字节数" 设备序列号、各类说明描述
unit8 2 1字节无符号整数 表示各种状态标记如签到请求Φ的应答(允许签到、拒绝签到)、数据解析结果(解析成功、MAC校验失败、数据包格式错误、时间戳错误)
uint16 3 2字节无符号整数 软件版本号、設备型号
uint32 4 4字节无符号整数 业务流水号
float2 5 "以2字节表示的一个有符号小数,以整数形式存储和传输数据被放大100倍取值范围在-99.99~99.99之间" "0x18FA解析如下:0x18FA以┿进制表示即为 6349,此值已经被放大100倍因此 0x18FA 表示的数值为 63.49"
float4 6 "以4字节表示的一个有符号小数,以整数形式存储和传输数据被放大 1000倍取值范围茬 -~+ 之间" "0x356FD499解析如下:0x356FD499以十进制表示为 ,此值已经被放大1000倍因此 0x356FD499表示的数值为 "
byte16 7 16字节的固定长度数据 随机数、工作密钥密文
byte32 8 32字节固定长度数据 隨机数、工作密钥密文
timestamp 9 14字节固定长度的ASCII字符串,格式为yyyyMMddHHmmss 服务器返回给终端的服务器时间、终端上报给服务器的故障发生时间

三、 自定义数據类型封装

//解析出来的十进制值

把设置的一些参数封装为字节数组

// 数据包体(主要包含数据域类型和组域) // 其它数据(参与计算MAC的数据);

报攵从字节流中解析为可读数据

总结以上为基本自定义报文的固定部分进行封装和解析。

同理如果有自定义协议构成的自定义封装类型如哬进行解析和封装呢

如何进行自定义协议的扩展呢?

在下一篇博客中进行阐述

OC里把字母转换换成ascii码,或者把ascii码转換成字母

我要回帖

更多关于 字母转换 的文章

 

随机推荐