编码解码程序

编码解码程序

程序设计

1.选择类型

  • 出现对话框显示:“请选择你要解码的数据类型”
  • 选项:1.数字 2.数字浮点数 3.英文文本 4.中文文本 5.图像
    2.转换数据
  • 数字整数
    原码反码补码
    二进制 八进制 十六进制
  • 浮点数
    二进制
  • 英文文本
    根据ASCII码转换(参考:chr()ord())
  • 中文文本
    unicode转换

tkinter

1.介绍
-Tkinter: Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter 可以在大多数的 Unix 平台下使用,同样可以应用在 Windows 和 Macintosh 系统里。Tk8.0 的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。

2.编程
-kinter 是 Python 的标准 GUI 库。Python 使用 Tkinter 可以快速的创建 GUI 应用程序。
由于 Tkinter 是内置到 python 的安装包中、只要安装好 Python 之后就能 import Tkinter 库、而且 IDLE 也是用 Tkinter 编写而成、对于简单的图形界面 Tkinter 还是能应付自如。

3.步骤

  • 导入 Tkinter 模块
  • 创建控件
  • 指定这个控件的 master, 即这个控件属于哪一个
  • 告诉 GM(geometry manager) 有一个控件产生了。

4.控件

Button 按钮控件;在程序中显示按钮。
Canvas 画布控件;显示图形元素如线条或文本
Checkbutton 多选框控件;用于在程序中提供多项选择框
Entry 输入控件;用于显示简单的文本内容
Frame 框架控件;在屏幕上显示一个矩形区域,多用来作为容器
Label 标签控件;可以显示文本和位图
Listbox 列表框控件;在Listbox窗口小部件是用来显示一个字符串列表给用户
Menubutton 菜单按钮控件,用于显示菜单项。
Menu 菜单控件;显示菜单栏,下拉菜单和弹出菜单
Message 消息控件;用来显示多行文本,与label比较类似
Radiobutton 单选按钮控件;显示一个单选的按钮状态
Scale 范围控件;显示一个数值刻度,为输出限定范围的数字区间
Scrollbar 滚动条控件,当内容超过可视化区域时使用,如列表框。.
Text 文本控件;用于显示多行文本
Toplevel 容器控件;用来提供一个单独的对话框,和Frame比较类似
Spinbox 输入控件;与Entry类似,但是可以指定输入范围值
PanedWindow PanedWindow是一个窗口布局管理的插件,可以包含一个或者多个子控件。
LabelFrame labelframe 是一个简单的容器控件。常用与复杂的窗口布局。
tkMessageBox 用于显示你应用程序的消息框。

5.标准属性

Dimension 控件大小;
Color 控件颜色;
Font 控件字体;
Anchor 锚点;
Relief 控件样式;
Bitmap 位图;
Cursor 光标;
6.几何管理
pack() 包装;
------- ----
grid() 网格;
place() 位置;

进制转换

- 二进制:bin()
- 八进制:oct()
- 十六进制:hex()
- 其他进制转变十进制:int('1010',2)

原码反码补码

  • 原码:原码 = 符号位 + 真值 (真值:数字绝对值的二进制)(符号位:最高位表示符号位(0表示正,1表示负))
  • 反码:负数的反码 - 原码符号位不变,其他位取反;正数就是原码
  • 补码:负数的补码 - 反码加一;正数就是原码

浮点数二进制

  • 格式:float : 符号位(首位)、指数位(8位)、尾数(23位)
  • 方法:
    整数部分:除以2,取出余数,商继续除以2,直到得到0为止,将取出的余数逆序
    小数部分:乘以2,然后取出整数部分,将剩下的小数部分继续乘以2,然后再取整数部分,一直取到小数部分为零为止。

英文编码

-ord():ord() 函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值,如果所给的 Unicode 字符超出了你的 Python 定义范围,则会引发一个 TypeError 的异常。
-for语句:

中文编码

-unicode:统一码,也叫万国码、单一码(Unicode)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。一个 Unicode 字符串就是一串代码点序列,这些代码点的数值范围为:0 - 0x10ffff。这串序列需要用内存中一系列字节(意思是,取值在0 - 255 之间)来表示。将 Unicode 字符串转换成一系列字节串的规则就称为编码。

  • utf-8:UTF-8 是最广泛使用的编码方式之一。UTF表示“统一码转换格式”(Unicode Transformation Format), 8 的意思是编码中使用 8 位 (8 bit)数字。
  • utf-8规则:
    -如果代码点小于 128,用相应的字节值表示该 Unicode 字符
    -如果代码点在 128 到 0x7ff之间,这类代码点被转换成字节值在 128 - 255 之间的两个字节值。
    -代码点大于 0x7ff,这类 代码点对应的 Unicode 将使用 3 - 4 个字节序列表示, 序列中每个字节的值都在 128 - 255 范围内。
    -详细参考http://blog.csdn.net/qq_26886929/article/details/53993823

代码

import tkinter as tk
from tkinter.messagebox import showinfo
import unicodedata
import sys

window = tk.Tk()
window.title('编码解码')
window.geometry('400x500')

l = tk.Label(window,text='请选择你想要解码的数据类型',bg='white',width=30,height=2)
l.pack()

def number_zheng():
   
    a = eval(input("请输入一个整数:"))
    if a <= 0:
        print("二进制:",bin(-int(a)),'八进制:',oct(-int(a)),'十六进制:',hex(-int(a)))
        print("原码为:",'1'+bin(a)[3:])
        print("反码为:",'1'+bin(2**(len(bin(a)[3:])+1)-1+a)[3:])
        print("反码为:",'1'+bin(2**(len(bin(a)[3:])+1)+a)[3:])

    else:
       
        print("二进制:",bin(int(a)),'八进制:',oct(int(a)),'十六进制:',hex(int(a)))


        print('原码:',bin(int(a)),'反码:',bin(int(a)),'补码:',bin(int(a)))  



       
       
def number_xiao():
  
    
    a = input('请输入')
    def binary2(num, digits):
        onezero = f'{int(num*2**digits):b}'
        return f'{onezero[:-digits]}.{onezero[-digits:]}'
    examples = [float(a)]

    for e in examples:
        print(f'{e:>12.4f} -> {binary2(e, 4):>12}')

       


        

def English():
    c = input("请输入英文文本")
    for i in c:
        print(hex(ord(i)))
        

    

def Chinese():
   
    
    name = input("请输入:")
    print(name.encode('unicode_escape'))
    code = name.encode('unicode_escape')
    print(code.decode(('unicode_escape')))

b = tk.Button(window,text='数字整数',width=15,height=2,command=number_zheng)
b.pack()
b = tk.Button(window,text='数字小数',width=15,height=2,command=number_xiao)
b.pack()
b = tk.Button(window,text='英文文本',width=15,height=2,command=English)
b.pack()
b = tk.Button(window,text='中文文本',width=15,height=2,command=Chinese)
b.pack()


window.mainloop()

posted @ 2021-11-15 22:00  20211301郑润芃  阅读(299)  评论(0编辑  收藏  举报