首页 > 其他分享 >编码

编码

时间:2024-12-09 16:12:23浏览次数:12  
标签:编码 字节 十六进制 16 字符 编码方式

编码

通信领域常用编码

脉冲

类似于人的脉搏,主要特性参数有波形幅度和重复频率

img

电话拨号编码

1-9 分别使用 1-9 个脉冲,0 则表示使用 10 个脉冲

Morse编码 (摩斯电码)

最多6位 也可以使用01串表示

摩尔斯电码

敲击码

使用点击声音来命名编码

TapCode 1 2 3 4 5
1 A B C/K D E
2 F G H I J
3 L M N O P
4 Q R S T U
5 V W X Y Z

img

曼彻斯特编码

又称自同步码,相位编码,有两种编码方式:

都用电压的变化来分辨0和1

  • 从高电平到低电平的跳变代表1,而从低电平到高电平的跳变代表0(as per G.E.Tomas编码方式)

  • 从高电平到低电平的跳变代表0,而从低电平到高电平的跳变代表1(as per IEEE 802.3编码方式)

img

(根据802.3中规定编码方式)从接收的编码位中提取原始数据:

image-20241202111305470

而G.E. Thomas方式与之正好相反

格雷编码

是一种在相邻数值之间只有一个位变化的二进制编码方式

例如,n=2时的格雷码序列是:00, 01, 11, 10。可以看到,从00到01,从01到11,以及从11到10,每次都只有一个位发生了变化

以二进制为0值的格雷码为第零项,第一项改变最右边的位元,第二项改变右起第一个为1的位元的左边位元,第三、四项方法同第一、二项,如此反复,即可排列出n个位元的格雷码。

二进制转格雷码 自低位至高位运算即可,无需考虑进位

计算机相关的编码

ACSCII编码

可见字符

  • 0-9, 48-57
  • A-Z, 65-90
  • a-z, 97-122
ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符
0 NUT 32 (space) 64 @ 96
1 SOH 33 ! 65 A 97 a
2 STX 34 " 66 B 98 b
3 ETX 35 # 67 C 99 c
4 EOT 36 $ 68 D 100 d
5 ENQ 37 % 69 E 101 e
6 ACK 38 & 70 F 102 f
7 BEL 39 , 71 G 103 g
8 BS 40 ( 72 H 104 h
9 HT 41 ) 73 I 105 i
10 LF 42 * 74 J 106 j
11 VT 43 + 75 K 107 k
12 FF 44 , 76 L 108 l
13 CR 45 - 77 M 109 m
14 SO 46 . 78 N 110 n
15 SI 47 / 79 O 111 o
16 DLE 48 0 80 P 112 p
17 DCI 49 1 81 Q 113 q
18 DC2 50 2 82 R 114 r
19 DC3 51 3 83 S 115 s
20 DC4 52 4 84 T 116 t
21 NAK 53 5 85 U 117 u
22 SYN 54 6 86 V 118 v
23 TB 55 7 87 W 119 w
24 CAN 56 8 88 X 120 x
25 EM 57 9 89 Y 121 y
26 SUB 58 : 90 Z 122 z
27 ESC 59 ; 91 [ 123 {
28 FS 60 < 92 \ 124 |
29 GS 61 = 93 ] 125 }
30 RS 62 > 94 ^ 126 `
31 US 63 ? 95 _ 127 DEL

转换器

ASCII 字符偏移

字符移位

字符移位是在对应范围之内移位 ,如大写字母在大写字母范围之内移动,超过 z从头开始移动

public static void main(String[] args){
	char m = 'M';
	int n = 20;
	//[字符+数字]直接输出是数字
	System.out.println(m+n);//97
	System.out.println((char)(a+m));//a
	if(m+n > 'Z'){
	//此处相当于97>90
		m = (char)(m-(26-n));//此处注意一定要加(char),否则会产生类型错误(返回数字)
	}
	System.out.println(m);//G
}

数字移动同理

补全感叹号对应的内容(2018 DEFCON Quals ghettohackers: Throwback)

题目

Anyo!e!howouldsacrificepo!icyforexecu!!onspeedthink!securityisacomm!ditytop!urintoasy!tem!

利用感叹号来分割字符

长度为一的字符串对应字母 a,长度为2的字符串对应字母 b,以此类推,当然 字符串长度为 0,对应空格

ori ='Anyo!e!howouldsacrificepo!icyforexecu!!onspeedthink!securityisacomm!ditytop!urintoasy!tem!'
sp = ori.split('!')
print repr(''.join(chr(97 + len(s) - 1) for s in sp))


//输出
dark logic 

二进制编码

0 1

十六进制编码

0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、Fimage-20241202204756730

C 中的十六进制是在数字前面加上 0X来表示,例:12AF在 C 中表示为 0X12AF

十六进制转二进制

每位十六进制用 4 位二进制来表示

十六进制转十进制

16进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方…

例子:2AF5

第0位:

img

第1位:

img

第2位:

img

第3位:

img

直接计算就是:

img

Base编码

base xx 中的 xx 表示的是采用多少个字符进行编码

  • base64结尾可能会有 = 号,但最多有 2 个
  • base32 结尾可能会有 = 号,但最多有 6 个
  • 有可能需要自己加等号
  • = 也就是 3D

base64

比如说 base64 就是采用以下 64 个字符编码,由于 2 的 6 次方等于 64,所以每 6 个比特为一个单元,对应某个可打印字符。

3 个字节就有 24 个比特,对应于 4 个 Base64 单元,即 3 个字节需要用 4 个可打印字符来表示。

例:Man

image-20241202213020971

如果要编码的字节数不能被3整除,最后会多出1个或2个字节,可以使用0字节在末尾补足,使其能够被3整除,在进行 Base64 编码,在编码后的 base64 文本后加上一个或两个 = 号,代表补足的字节数

也就是说,当最后剩余一个八位字节(一个 byte)时,最后一个 6 位的 base64 字节块有四位是 0 值,最后附加上两个等号;如果最后剩余两个八位字节(2 个 byte)时,最后一个 6 位的 base 字节块有两位是 0 值,最后附加一个等号

base64 补 0

base32

使用32个可见字符进行编码,5个 bit 为1个分组

5字节是40 bit ,对应着8个 base32 分组

当出现不足 5 字节时,最第一个不足 5 bit 进行补位(用0补位)后面剩余的部分用 = 填充,知道补满5字节

base32 最多6个 =

base32

霍夫曼编码

又称哈夫曼编码,赫夫曼编码

哈夫曼编码首先会使用字符的频率创建一棵树,然后通过这个树的结构为每个字符生成一个特定的编码,出现频率高的字符使用较短的编码,出现频率低的则使用较长的编码,这样就会使编码之后的字符串平均长度降低,从而达到数据无损压缩的目的

先计算该字符串出现的频率,按照出现的频率进行排序,出现次数高的在后面

将字符作为叶子节点开始构建一棵树(哈夫曼树称为最优二叉树,一种带权路径长度最短的二叉树)

XXencode

XXencode 将输入文本以每三个字节为单位进行编码

如果最后剩下的资料少于三个字节,不够的部份用零补齐

这三个字节共有 24 个 Bit,以 6bit 为单位分为 4 个组,每个组以十进制来表示所出现的数值只会落在 0 到 63 之间。以所对应值的位置字符代替

URL编码

又称百分号编码

分作保留和未保留字符,保留字符是那些具有特殊含义的字符,未保留则反之

image-20241206170333205

保留字符

先将字符的ascii值用两个16进制数来表示,再在起那面放转义字符 %,放到URL中

image-20241206171215720

编码后的保留字符 所具有的含义雨编码之前的含义不同

标签:编码,字节,十六进制,16,字符,编码方式
From: https://www.cnblogs.com/Yolololo/p/18595217

相关文章

  • 违规抽烟识别智慧矿山一体机未戴安全帽识别:网络摄像机中的音频及音频编码阐述
    在现代网络摄像机的设计中,音频功能已成为一个不可或缺的组成部分,它不仅增强了监控系统的能力,还为用户提供了更丰富的现场信息。音频功能使得网络摄像机能够捕捉到环境中的声音,从而在安全监控、远程通信以及其他多种应用中发挥重要作用。本文将详细探讨网络摄像机中的音频功能及其......
  • Ruby 中文编码
    用Ruby输出"Hello,World!",英文没有问题,但是如果你输出中文字符"你好,世界"就有可能会碰到中文编码问题。Ruby文件中如果未指定编码,在执行过程会出现报错:#!/usr/bin/ruby-wputs"你好,世界!";以上程序执行输出结果为:invalidmultibytechar(US-ASCII)以上出错信息显......
  • 你知道什么是硬编码吗?什么时候会用到硬编码呢?
    在前端开发中,硬编码(Hardcoding)指的是直接将数据值嵌入到源代码中,而不是从外部来源(例如数据库、配置文件或API)获取。这意味着值在代码中是固定的,如果需要更改,必须修改代码本身。以下是一些在前端开发中可能使用硬编码的情况,以及它们的优缺点:何时会用到硬编码?原型设计和快速开......
  • 求解赫夫曼编码的算法 数据结构算法6.12、6.13
    一.问题描述定义赫夫曼树和赫夫曼编码的存储结构,并写出求解赫夫曼编码的算法。二.问题分析1.赫夫曼树的逻辑结构赫夫曼树(HuffmanTree)是一种用于数据压缩的二叉树,也称为最优二叉树。其逻辑结构主要包括以下特点:节点类型:赫夫曼树包含两种类型的节点,即内部节点(也称为非叶子......
  • 输出与文件编码的兼容性 在 .CMD 文件中,通过正确的编码方式(如 UTF-8),可以确保脚本与外
    在计算机科学和技术领域,.CMD和.BAT文件都属于批处理脚本文件格式,它们是Windows操作系统中用于执行命令的一种文件类型。虽然这两者非常相似,但.CMD文件有一些相对于.BAT文件的优势,特别是在Windows2000及以后版本中。下面将分析.CMD文件相对于.BAT文件的一些优势,并......
  • Android 屏幕采集并编码为H.264
    前言我们前面基于摄像机的图像采集以及编解码已经完成了,那么接下来计划后面的三篇博文分别实现Android屏幕采集实现并进行H.264编解码、MIC音频采集并编码为AAC以及AAC解码播放,希冀可以通过这六篇博文能够对Android上面的音视频编解码有一个初步的学习和了解,由于博主也是近......
  • 【花雕学编程】Arduino动手做(229)---带编码器350w机器人轮毂马达6.5 英寸电动轮毂伺服
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来——小小的......
  • 基于方块编码的图像压缩matlab仿真,带GUI界面
    1.算法运行效果图预览(完整程序运行后无水印) 下图是随着方块大小的变化,图像的压缩率以及对应的图像质量指标PSNR的变化趋势曲线。 2.算法运行软件版本matlab2022a 3.部分核心程序(完整版代码包含详细中文注释和操作步骤视频)figure;subplot(121);plot(sets,tr......
  • 基于Huffman编码的GPS定位数据无损压缩算法
    目录一、引言二、霍夫曼编码三、经典Huffman编码四、适应性Huffman编码五、GPS定位数据压缩提示:文末附定位数据压缩工具和源码一、引言        车载监控系统中,车载终端需要获取GPS信号(经度、纬度、速度、方向等)实时上传至监控中心,监控中心按通信协议将收......
  • UNICODE编码特殊符号
    平时编程中会用到各种各样的符号,有时不想去找图片,一些简单的符号,可以直接通过Unicode字符来获取: RoundButton{text:"\u2713"//UnicodeCharacter'CHECKMARK'onClicked:textArea.readOnly=true}以下是常用的Unicode特殊符号,建议收藏:⇠  箭头......