Python中ASCII转十六进制、C中BCD转十进制、十六进制学习记录

ASCII、BCD转十六进制

  • ASCII转十六进制
    • 转换规则
    • Python实现
  • BCD转十进制、十六进制
    • BCD码的优点
    • BCD码分类
    • 各种BCD码的特点
    • 转换规则

ASCII转十六进制

转换规则

ASCII(American Standard Code for Information Interchange,美国信息互换标准代码)是基于拉丁字母的一套电脑编码系统,ASCII码表主要用于显示现代英语和其他西欧语言。转换规则如下表:

十六进制代码

MCS 字符或缩写

DEC 多国字符名

ASCII 控制字符 1

00

NUL

空字符

01

SOH

标题起始 (Ctrl/A)

02

STX

文本起始 (Ctrl/B)

03

ETX

文本结束 (Ctrl/C)

04

EOT

传输结束 (Ctrl/D)

05

ENQ

询问 (Ctrl/E)

06

ACK

认可 (Ctrl/F)

07

BEL

铃 (Ctrl/G)

08

BS

退格 (Ctrl/H)

09

HT

水平制表栏 (Ctrl/I)

0A

LF

换行 (Ctrl/J)

0B

VT

垂直制表栏 (Ctrl/K)

0C

FF

换页 (Ctrl/L)

0D

CR

回车 (Ctrl/M)

0E

SO

移出 (Ctrl/N)

0F

SI

移入 (Ctrl/O)

10

DLE

数据链接丢失 (Ctrl/P)

11

DC1

设备控制 1 (Ctrl/Q)

12

DC2

设备控制 2 (Ctrl/R)

13

DC3

设备控制 3 (Ctrl/S)

14

DC4

设备控制 4 (Ctrl/T)

15

NAK

否定接受 (Ctrl/U)

16

SYN

同步闲置符 (Ctrl/V)

17

ETB

传输块结束 (Ctrl/W)

18

CAN

取消 (Ctrl/X)

19

EM

媒体结束 (Ctrl/Y)

1A

SUB

替换 (Ctrl/Z)

1B

ESC

换码符

1C

FS

文件分隔符

1D

GS

组分隔符

1E

RS

记录分隔符

1F

US

单位分隔符

ASCII 特殊和数字字符

20

SP

空格

21

!

感叹号

22

"

引号 (双引号)

23

#

数字符号

24

$

美元符

25

%

百分号

26

&

和号

27

"

省略号 (单引号)

28

(

左圆括号

29

)

右圆括号

2A

*

星号

2B

 

加号

2C

,

逗号

2D

--

连字号或减号

2E

.

句点或小数点

2F

/

斜杠

30

0

31

1

1

32

2

2

33

3

3

34

4

4

35

5

5

36

6

6

37

7

7

38

8

8

39

9

9

3A

:

冒号

3B

;

分号

3C

<

小于

3D

=

等于

3E

>

大于

3F

?

问号

ASCII 字母字符

40

@

商业 at 符号

41

A

大写字母 A

42

B

大写字母 B

43

C

大写字母 C

44

D

大写字母 D

45

E

大写字母 E

46

F

大写字母 F

47

G

大写字母 G

48

H

大写字母 H

49

I

大写字母 I

4A

J

大写字母 J

4B

K

大写字母 K

4C

L

大写字母 L

4D

M

大写字母 M

4E

N

大写字母 N

4F

O

大写字母 O

50

P

大写字母 P

51

Q

大写字母 Q

52

R

大写字母 R

53

S

大写字母 S

54

T

大写字母 T

55

U

大写字母 U

56

V

大写字母 V

57

W

大写字母 W

58

X

大写字母 X

59

Y

大写字母 Y

5A

Z

大写字母 Z

5B

[

左中括号

5C

\

反斜杠

5D

]

右中括号

5E

^

音调符号

5F

_

下划线

60

`

重音符

61

a

小写字母 a

62

b

小写字母 b

63

c

小写字母 c

64

d

小写字母 d

65

e

小写字母 e

66

f

小写字母 f

67

g

小写字母 g

68

h

小写字母 h

69

i

小写字母 i

6A

j

小写字母 j

6B

k

小写字母 k

6C

l

小写字母 l

6D

m

小写字母 m

6E

n

小写字母 n

6F

o

小写字母 o

70

p

小写字母 p

71

q

小写字母 q

72

r

小写字母 r

73

s

小写字母 s

74

t

小写字母 t

75

u

小写字母 u

76

v

小写字母 v

77

w

小写字母 w

78

x

小写字母 x

79

y

小写字母 y

7A

z

小写字母 z

7B

{

左大括号

7C

|

垂直线

7D

}

右大括号 (ALTMODE)

7E

~

代字号 (ALTMODE)

7F

DEL

擦掉 (DELETE)

控制字符

80

 

[保留]

81

 

[保留]

82

 

[保留]

83

 

[保留]

84

IND

索引

85

NEL

下一行

86

SSA

被选区域起始

87

ESA

被选区域结束

88

HTS

水平制表符集

89

HTJ

对齐的水平制表符集

8A

VTS

垂直制表符集

8B

PLD

部分行向下

8C

PLU

部分行向上

8D

RI

反向索引

8E

SS2

单移 2

8F

SS3

单移 3

90

DCS

设备控制字符串

91

PU1

专用 1

92

PU2

专用 2

93

STS

设置传输状态

94

CCH

取消字符

95

MW

消息等待

96

SPA

保护区起始

97

EPA

保护区结束

98

 

[保留]

99

 

[保留]

9A

 

[保留]

9B

CSI

控制序列引导符

9C

ST

字符串终止符

9D

OSC

操作系统命令

9E

PM

秘密消息

9F

APC

应用程序

其他字符

A0

 

[保留] 2

A1

?

反向感叹号

A2

?

分币符

A3

?

英磅符

A4

 

[保留] 2

A5

?

人民币符

A6

 

[保留] 2

A7

§

章节符

A8

¤

通用货币符号 2

A9

?

版权符号

AA

?

阴性顺序指示符

AB

?

左角引号

AC

 

[保留] 2

AD

 

[保留] 2

AE

 

[保留] 2

AF

 

[保留] 2

B0

°

温度符

B1

±

加/减号

B2

?

上标 2

B3

?

上标 3

B4

 

[保留] 2

B5

?

微符

B6

?

段落符,pilcrow

B7

·

中点

B8

 

[保留] 2

B9

?

上标 1

BA

?

阳性顺序指示符

BB

?

右角引号

BC

?

分数四分之一

BD

?

分数二分之一

BE

 

[保留] 2

BF

?

反向问号

C0

?

带重音符的大写字母 A

C1

?

带尖锐重音的大写字母 A

C2

?

带音调符号的大写字母 A

C3

?

带代字号的大写字母 A

C4

?

带元音变音 (分音符号) 的大写字母 A

C5

?

带铃声的大写字母 A

C6

?

大写字母 AE 双重元音

C7

?

带变音符号的大写字母 C

C8

?

带重音符的大写字母 E

C9

?

带尖锐重音的大写字母 E

CA

?

带音调符号的大写字母 E

CB

?

带元音变音 (分音符号) 的大写字母 E

CC

?

带重音符的大写字母 I

CD

?

带尖锐重音的大写字母 I

CE

?

带音调符号的大写字母 I

CF

?

带元音变音 (分音符号) 的大写字母 I

D0

 

[保留] 2

D1

?

带代字号的大写字母 N

D2

?

带重音符的大写字母 O

D3

?

带尖锐重音的大写字母 O

D4

?

带音调符号的大写字母 O

D5

?

带代字号的大写字母 O

D6

?

带元音变音 (分音符号) 的大写字母 O

D7

OE

大写字母 OE 连字 2

D8

?

带斜杠的大写字母 O

D9

?

带重音符的大写字母 U

DA

?

带尖锐重音的大写字母 U

DB

?

带音调符号的大写字母 U

DC

?

带元音变音 (分音符号) 的大写字母 U

DD

Y

带元音变音 (分音符号) 的大写字母 Y

DE

 

[保留] 2

DF

?

德语高调小写字母 s

E0

à

带重音符的小写字母 a

E1

á

带尖锐重音的小写字母 a

E2

?

带音调符号的小写字母 a

E3

?

带代字号的小写字母 a

E4

?

带元音变音 (分音符号) 的小写字母 a

E5

?

带铃声的小写字母 a

E6

?

小写字母 ae 双重元音

E7

?

带变音符号的小写字母 c

E8

è

带重音符的小写字母 e

E9

é

带尖锐重音的小写字母 e

EA

ê

带音调符号的小写字母 e

EB

?

带元音变音 (分音符号) 的小写字母 e

EC

ì

带重音符的小写字母 i

ED

í

带尖锐重音的小写字母 i

EE

?

带音调符号的小写字母 i

EF

?

带元音变音 (分音符号) 的小写字母 i

F0

 

[保留] 2

F1

?

带代字号的小写字母 n

F2

ò

带重音符的小写字母 o

F3

ó

带尖锐重音的小写字母 o

F4

?

带音调符号的小写字母 o

F5

?

带代字号的小写字母 o

F6

?

带元音变音 (分音符号) 的小写字母 o

F7

oe

小写字母 oe 连字 2

F8

?

带斜杠的小写字母 o

F9

ù

带重音符的小写字母 u

FA

ú

带尖锐重音的小写字母 u

FB

?

带音调符号的小写字母 u

FC

ü

带元音变音 (分音符号) 的小写字母 u

FD

?

带元音变音 (分音符号) 的小写字母 y 2

FE

 

[保留] 2

FF

 

[保留] 2

Python实现

asciiData.decode('ascii').encode('hex')

BCD转十进制、十六进制

BCD码(Binary-Coded Decimal‎)亦称二进码十进数或二-十进制代码。 用4位二进制数来表示1位十进制数中的0~9这10个数码。 是一种二进制的数字编码形式,用二进制编码的十进制代码。

BCD码的优点

这种编码形式使二进制和十进制之间的转换能够快捷进行。采用BCD码,既可保存数值的精确度,又可避免使电脑作浮点运算时所消耗的时间。

BCD码分类

(1)BCD码分为有权和无权两类:
有权BCD码:8421码,2421码,5421码,…
无权BCD码:余3码,格雷码,…
其中,8421码是最常用的有权BCD码。
(2)BCD码又可分为压缩式和非压缩式两类。

各种BCD码的特点

8421码编码直观,易于理解,最常用
5421码和2421码中大于5的数字都是高位为1,5以下的高位为0
余3码是在8421码基础上加上3,有上溢出和下溢出的空间

转换规则

8421

十进制数

8421

 

0

0000

1

0001

2

0010

3

0011

4

0100

5

0101

6

0110

7

0111

8

1000

9

1001

 

其他较常用的BCD码         

十进制数

5421

 

2421

3

0

0000

0000

0011

1

0001

0001

0100

2

0010

0010

0101

3

0011

0011

0110

4

0100

0100

0111

5

1000

1011

1000

6

1001

1100

1001

7

1010

1101

1010

8

1011

1110

1011

9

1100

1111

1100

      

## C实现
#include 
#include 
 
/////////////////////////////////////////////////////
//
// 功能:二进制取反
//
// 输入: const unsigned char *src  二进制数据
//      int length                待转换的二进制数据长度
//
// 输出: unsigned char *dst        取反后的二进制数据
//
// 返回: 0    success
//
//////////////////////////////////////////////////////
int convert(unsigned char *dst, const unsigned char *src, int length)
{
        int i;
 
        for(i=0; i=0; i--)
    {
        hex[i] = (dec%256)&0xFF;
        dec /= 256;
    }
 
    return 0;
}
 
/////////////////////////////////////////////////////////
//
// 功能:求权
//
// 输入: int base                    进制基数
//      int times                   权级数
//
// 输出:
//
// 返回: unsigned long               当前数据位的权
//
//////////////////////////////////////////////////////////
unsigned long power(int base, int times)
{
    int i;
    unsigned long rslt = 1;
 
    for(i=0; i>4)&0x0F)*10 + (bcd[i]&0x0F);   
        dec += tmp * power(100, length-1-i);          
     }
 
     return dec;
}
 
/////////////////////////////////////////////////////////
//
// 功能:十进制转 BCD 码
//
// 输入: int Dec                      待转换的十进制数据
//      int length                   BCD 码数据长度
//
// 输出: unsigned char *Bcd           转换后的 BCD 码
//
// 返回: 0  success
//
// 思路:原理同 BCD 码转十进制
//
//////////////////////////////////////////////////////////
int DectoBCD(int Dec, unsigned char *Bcd, int length)
{
     int i;
     int temp;
 
     for(i=length-1; i>=0; i--)
     {
         temp = Dec%100;
         Bcd[i] = ((temp/10)<<4) + ((temp%10) & 0x0F);
         Dec /= 100;
     }
 
     return 0;
}
//------------- 函数信息 ------------------------------------------
// 函 数 名 : BCDtoDec
// 函数描述 : BCD 码转换成十进制码
// 入口参数 : temp: 转化的 BCD 码
// 返     回 : 转化后的十进制码
// 作     者 :
// 日     期 : 2006.11.24
// 说     明 :
//
//---------------------------------------------------------------
uint8  BCDtoDec( uint8 temp )
{
return ( ( temp/16 )*10+temp%16) ;
}
 
 
 
 
//------------- 函数信息 ------------------------------------------
// 函 数 名 : DectoBCD
// 函数描述 : 十 / 十六进制码转换成 BCD 码
// 入口参数 : temp: 转化的十进制码
// 返     回 : 转化后的 BCD 码
// 作     者 :
// 日     期 : 2006.11.24
// 说     明 :
//
//---------------------------------------------------------------
uint8 DectoBCD( uint8 temp )
{
return ( (temp/10)*16 + temp%10 ) ;
}

你可能感兴趣的:(Python语言相关学习记录,C语言相关学习记录)