• 硬解密解码的区别 编码方式 (Encoding) Encoding is a process of conversion of data from one format to another. It includes the utilization of a code to change unique information into a structure ...
硬解密和软解码的区别 编码方式 (Encoding)
Encoding is a process of conversion of data from one format to another. It includes the utilization of a code to change unique information into a structure that can be utilized by an external application. 编码是将数据从一种格式转换为另一种格式的过程。 它包括利用代码将唯一信息更改为可由外部应用程序使用的结构。
The code utilized for changing over characters is called American Standard Code for Information Interchange (ASCII), the most commonly utilized encoding for files that contain text. 用于转换字符的代码称为美国信息交换标准代码(ASCII)，这是包含文本的文件最常用的编码。
Media files such as audio and video use encoding to reduce their file size. Each audio and video file format has a corresponding coder-decoder (codec) program that is used to code it into the appropriate format and then decodes for playback. For example, converting .mp4 into .avi, .flv to .mp3 etc. would require encoding. 诸如音频和视频之类的媒体文件使用编码来减小其文件大小。 每种音频和视频文件格式都有一个对应的编解码器(codec)程序，该程序用于将其编码为适当的格式，然后进行解码以进行播放。 例如，将.mp4转换为.avi，将.flv转换为.mp3等，将需要编码。
Let’s look at type of encoding: base64 让我们看一下编码类型： base64
Base64 Encoding: Base64编码：
It is an encoding technique used to convert binary data to an ASCII format. When we need to send binary data over media that are usually designed to handle textual data, we need to use base64. Example, sending images in an XML document or as an email attachment. 它是一种用于将二进制数据转换为ASCII格式的编码技术。 当我们需要通过通常用于处理文本数据的媒体发送二进制数据时，我们需要使用base64。 例如，以XML文档或电子邮件附件的形式发送图像。
The following figure is the base64 character index table, which is used to encode characters into base64. 下图是base64字符索引表，该表用于将字符编码为base64。
base64 character index table base64字符索引表 Let’s see some few examples: 让我们看一些例子：
1) And 1) 然后
Algorithm for base64 encoding: base64编码算法：
Convert ASCII code into octets 将ASCII码转换为八位字节 Convert octets into sextets 将八位字节转换为六重奏 Convert sextets into decimals 将六重音转换成小数 Convert decimals to their equivalent characters in base64 character index table 将小数转换为base64字符索引表中的等效字符 Note: The total characters in base64 encoded text is always a multiple of 4. 注意：以base64编码的文本中的字符总数始终为4的倍数。
echo -n “And” | base64QW5k2) An 2)
Note: The cells in the red are padded 0’s to complete the sextet.  And since the total characters in the output should be multiple of 4, we pad the output with an extra ‘=’ 注意 ：红色的单元格用0填充以完成六重奏。 由于输出中的总字符数应为4的倍数，因此我们在输出处加上额外的'='
echo -n “An” | base64QW4=3) A 3)A
echo -n “A” | base64QQ== 解码 (Decoding)
Decoding is the opposite of encoding. It is a process that converts an encoded code format back to its original code format. 解码与编码相反。 它是将编码的代码格式转换回其原始代码格式的过程。
Like in the encoding section above, the base64 encoded output can be converted back to its original text by reversing the steps. 像上面的编码部分一样，可以通过反转步骤将base64编码的输出转换回其原始文本。
Algorithm for base64 decoding: base64解码算法：
Convert base64 characters to their equivalent decimals index from the base64 index table 将base64字符转换为base64索引表中的等效小数索引 Convert decimals into sextets 将小数转换为六音 Convert sextets into octets 将六重奏转换为八位字节 Convert octets into ASCII code 将八位字节转换为ASCII代码  加密 (Encryption)
Encryption is the process of encoding information so that only the users that have authorization can access the data. Encryption does not itself prevent interference and eavesdropping attacks, but denies intelligible content to the interceptor. 加密是对信息进行编码的过程，以便只有获得授权的用户才能访问数据。 加密本身并不能防止干扰和窃听攻击，但会拒绝拦截器可理解的内容。
Encryption Algorithms are of two types: 加密算法有两种类型：
Symmetric-key encryption 对称密钥加密
In this encryption technique, the encryption and decryption key are the same. The key is sometimes referred to as a shared secret because the sender or computer system doing the encryption must share the secret key with anyone authorized to decrypt the message. E.g. Advanced Encryption Standard (AES) 在这种加密技术中，加密和解密密钥相同。 该密钥有时称为共享密钥，因为进行加密的发送方或计算机系统必须与任何有权解密消息的人共享该密钥。 例如，高级加密标准(AES)
Public-key encryption: 公钥加密：
In this encryption technique, the encryption and decryption keys are different. The encryption key is published for anyone to use and to encrypt data, while only the receiving user has access to the decryption key that decrypts the encrypted data. E.g. The Rivest-Shamir-Adleman (RSA) 在这种加密技术中，加密和解密密钥是不同的。 公开发布加密密钥，以供任何人使用和加密数据，而只有接收用户才能访问解密密钥，该解密密钥对加密的数据进行解密。 例如Rivest-Shamir-Adleman(RSA)
Other Examples: Triple DES,, Blowfish, Twofish etc. 其他示例：三重DES，河豚，Twofish等。
解密方式 (Decryption)
Decryption is a process of converting encoded/encrypted data back to its original form. This method is performed by decrypting the text manually or by using keys used to encrypt the original data. 解密是将编码/加密的数据转换回其原始形式的过程。 通过手动解密文本或使用用于加密原始数据的密钥来执行此方法。
散列 (Hashing)
Hashing is a process of converting data through a function, which results in an output of a fixed length. Using a fixed-length output increases security since anyone trying to decrypt the hash won’t be able to tell how long or short the input is simply by looking at the length of the output. 散列是通过函数转换数据的过程，该过程导致输出固定长度的数据。 使用固定长度的输出可提高安全性，因为任何试图解密哈希的人都无法仅通过查看输出的长度来判断输入的长度是多少。
Example: 例：
MD5 (Message Digest 5) Hashing Algorithm MD5(消息摘要5)哈希算法
It is an algorithm that takes in an input message (plain text) of arbitrary length and produces an output of length 128 bits called message digest (MD). 它是一种算法，它吸收任意长度的输入消息(纯文本)，并产生称为消息摘要(MD)的 128位长度的输出。
This algorithm is usually used for authentications. 此算法通常用于身份验证。
Checking integrity of MD 检查MD的完整性
A 128bit MD is generated by source. 源生成一个128位MD。 MD is appended to plain text. MD附加在纯文本上。 The MD is send to the receiver. MD发送到接收器。 Both the source and receiver MD will be compared. If they match then we can say our data was safely encrypted and was not changes during the process. 源和接收方MD都将被比较。 如果它们匹配，则可以说我们的数据已被安全加密，并且在此过程中没有更改。 MD5 Algorithm: MD5算法 ：
1) Append Padding bits: The input message is padded so that its length equals to 448 mod 512. Padding is always performed even if the message is already 448 mod 512. Padding is performed as follows: a single “1” bit is appended to the message and then “0” bits are appended so that the length in bits of the padded message becomes congruent to 448 mod 512. At least one bit and at most 512 bits are appended. 1)追加填充位：填充输入消息，使其长度等于448 mod512。即使消息已经是448 mod 512，也始终执行填充。填充执行如下：将单个“ 1”位附加到消息，然后附加“ 0”位，以便已填充消息的以位为单位的长度与448 mod 512一致。至少附加一位，最多512位。
2) Append Length: A 64-bit representation of the length of the message is appended to the result of step1. If the length of the message is greater than 2⁶⁴, only the low-order 64 bits will be used. The resulting message (after padding with bits and with b) has a length that is an exact multiple of 512 bits. The input message will have a length that is exact multiple of 16 (32 bit) words. 2)附加长度：消息长度的64位表示形式附加到步骤1的结果中。 如果消息的长度大于2/5，则仅使用低阶64位。 结果消息(在用位和b填充之后)的长度是512位的精确倍数。 输入消息的长度为16(32位)个字的整数倍。
3) Initialize MD buffer: A four-word buffer (A, B, C, D) is used to computer the message digest. Each of A, B, C, D is a 32bit register. These registers are initialized to the following values in hexadecimal, low order bytes first) 3)初始化MD缓冲区：一个四字缓冲区(A，B，C，D)用于计算机处理消息摘要。 A，B，C，D均为32位寄存器。 这些寄存器被初始化为以下值(十六进制，低位字节优先)
 word A: 01 23 45 67 word B: 89 ab cd ef word C: fe dc ba 98 word D: 76 54 32 104) Process message in 16-word blocks: Four functions will be defined such that function takes an input of three 32-bit words and produces and produces a 32-bit word output. F(X,Y,Z) = (X and Y) or (not(X) and Z) [Round1] G(X,Y,Z) = (X and Z) or (Y and not(Z)) [Round2] H(X,Y,Z) = X xor Y xor Z [Round3] I(X,Y,Z) = Y xor (X or not(Z)) [Round4] 4)以16个字的块为单位的过程消息：将定义四个功能，以便该功能接受三个32位字的输入，并产生和产生32位字的输出。 F(X，Y，Z)=(X和Y)或(not(X)和Z)[Round1] G(X，Y，Z)=(X和Z)或(Y and not(Z))[ Round2] H(X，Y，Z)= X或Y x或Z [Round3] I(X，Y，Z)= Y或(X或非(Z))[Round4]
5) Each round has 16 steps of the form: 5)每轮比赛有16个步骤，形式如下：
A ← B + ((A + Function (B, C, D) + x[ ] + T[i]) <<< s)where A, B, C, D refer to the 4 words of the buffer. But used in varying permutations and F (B, C,D) is different nonlinear function in each round (1,2,3,4). i represents different constants 16 constants every round. i will be T[1–16] for 1st round, then T[17–32] for round 2, then T[33–48] for round 3 and finally T[49–64]. X[ ] is a part of the original message. s is the circular left shift s bits.That means for 2nd round we get: 其中A，B，C，D是指缓冲区的4个字。 但是在变化的排列和F(B，C，D)中使用的是每轮(1,2,3,4)中不同的非线性函数。 我代表不同的常数每轮16个常数。 第一轮我将为T [1–16]，第二轮将为T [17–32]，第三轮将为T [33-48]，最后为T [49-64]。 X []是原始消息的一部分。 s是循环左移s位，这意味着在第二轮中我们得到：
B ← C + ((B + Function(C,D,A) + x[ ] + T[17–32]) <<< s)The following figure sums up the MD5 algorithm: 下图总结了MD5算法：
MD5 Overview MD5概述 In the above figure gives the overview of the Md5 Algorithm. Here, Message is converted into x[ ] parts for each buffer( A,B,C,D) and is processed with the Functions F, G, H, I and the constants from T[1–64]( which are divided into 16 constants for each buffer). Then we perform “addition modulo” on the output of these buffers and the initial buffer values. And hence, we get our message digest. If the length of the message is > 512 bits i.e. 1 block then, we again perform “addition modulo” on the MD output and initial buffer values for the next block and so on until we process last block. 上图中给出了Md5算法的概述。 在此，对于每个缓冲区(A，B，C，D)，消息被转换为x []部分，并使用函数F，G，H，I和来自T [1–64](的常数进行处理)每个缓冲区16个常量)。 然后，我们对这些缓冲区的输出和初始缓冲区值执行“加模”运算。 因此，我们得到了消息摘要。 如果消息的长度> 512位，即1块，则我们再次对MD输出和下一个块的初始缓冲区值执行“加模”运算，直到处理最后一个块。
Other Examples: SHA-1, SHA-2, SHA-3, SHA-256 etc 其他示例：SHA-1，SHA-2，SHA-3，SHA-256等
$echo -n Piyush | md510f95896a13c59b88e4c0e837642fb3c 编码vs加密vs哈希 (Encoding vs Encryption vs Hashing) Encoding: A technique for maintaining data usability and can be reversed by employing the same algorithm that encoded the content, i.e. no key is used. 编码 ：一种用于维护数据可用性的技术，可以通过采用对内容进行编码的相同算法来逆转，即不使用任何密钥。 Encryption: A technique for maintaining data confidentiality and requires the use of a key (kept secret) in order to return to plaintext. 加密 ：一种用于维护数据机密性的技术，需要使用密钥(保留的机密)才能返回纯文本。 Hashing: A technique for validating the integrity of content by detecting all modifications via obvious changes to the hash output. 哈希 ：一种通过对哈希输出进行明显更改来检测所有修改来验证内容完整性的技术。 翻译自: https://medium.com/swlh/quickly-encoding-decoding-encryption-decryption-hashing-318f7b3ea11e硬解密和软解码的区别 展开全文 • Python is 和 == 的区别, 编码和解码 一、is 和 == 的区别 is : 进行比较,比较的是内存地址是否一致 ==:进行比较,比较的是值是否相等 1.小数据池: 数字小数据池范围 -5~256 字符串中...  Python is 和 == 的区别, 编码和解码 一、is 和 == 的区别 is : 进行比较,比较的是内存地址是否一致 ==:进行比较,比较的是值是否相等 1.小数据池: 数字小数据池范围 -5~256 字符串中如果有特殊字符则他们的内存地址不一样 字符串中单个*20以内他们的内存地址一样,单个*21以上的内存地址不一样 二、编码与解码 ascii码: 不支持中文, 支持英文,数字,符号 8位 一个字节 gbk码: 支持中文,英文,数字,符号 英文 16位 两个字节 中文 16位 两个字节 unicode码 万国码: 支持 英文,中文,数字,符号 英文 32位 四个字节 中文 32位 四个字节 utf-8码 可变化的长度的万国码: 英文8位 一个字节 中文24位 三个字节 2.编码与解码: encode 编码: 拿到明文解码后的对应的字节 decode 解码: 将编码后的字节解码成对应的明文 !@! 用什么编码就用什么解码! posted on 2018-08-02 16:20 徐建0304 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/Treasuremy/p/9407863.html 展开全文 • JavaScript 中encodeURI,encodeURIComponent与escape的区别和 • is==的区别 1. id（） id是python的一个内置函数，通过id（）可以查看变量表的值在内存中的地址。 s1 = 2 print(id(s1)) # 1514368064 s2 = 2 print(id(s2)) # 1514368064 s3 = 'alex' print(id...  is和==的区别 1. id（） id是python的一个内置函数，通过id（）可以查看变量表的值在内存中的地址。 s1 = 2 print(id(s1)) # 1514368064 s2 = 2 print(id(s2)) # 1514368064 s3 = 'alex' print(id(s3)) # 43156680 s4 = "alex" print(id(s4)) # 43156680 lst = [1, 2, 4] print(id(lst)) # 43164168 lst1 = [1, 2, 4] print(id(lst1)) # 41362568 tup = (1, 2) tup1 = (1, 2) print(id(tup)) #39978312 print(id(tup1)) #39978376 # 我们发现，数字和字符串的数据地址是一样的. 列表和元组的数据地址是不一样的.  小数据池（常量池）：把我们使用过的值存储在小数据池中，供其他数据使用。 小数据池给数字和字符串使用，其他数据类型不存在。 对于数字：-5~256是会被加到小数据池中的，每次使用都是同一个对象。 对于字符串： 1，如果是带特殊字符的，那么不会被添加到小数据池，每次都是新的； 2，如果是单一字母*n的情况，如"a"*20，在20个单位内（包含20个）是可以的，超过20个单位就不会添加到小数据池； 注意（一般情况下）：在py文件中，如果你只是单纯的定义一个字符串，那么一般情况下都会被添到小数据池中，我们可以这样认为：在使用字符串的时候，python会帮我们把字符串进行缓存，在下次使用的时候直接指向这个字符串即可，可以节省很多内存。 这个问题千万不要纠结，因为官方没有给出一个完美的结论和定论，所以只能是自己摸索。 说了这么多，这个id( )和is有什么关系呢？注意，is比较的就是id( )计算出来的结果，由于id( )是帮我们查看某数据（对象）的内存地址，那么is比较的就是数据（对象）的内存地址，即我们通过is可以查看两边使用的是否是同一个对象。 双等（==）表示的是判断是否相等，注意，这个双等比较的是具体的值。 总结：==比较的是两边的值是否一样；is比较的是内存地址是否一样，即是不是同一个对象。 编码问题 1. 关于python2的编码问题： python2中使用的是ASCII码，所以不支持中文，如果需要在python2中更改编码，需要在中文的开始编写：  #-*- encoding:utf-8 -*-  2. 编码回顾 1，ASCII：最早的编码，里面有英文大写字母，小写字母，数字，一些特殊字符，没有中文。8个bit（位），1个byte（字节）。 2，GBK：中文国标码，里面包含了ASCII编码，16个bit，2个byte。 3，unicode：万国码，里面包含了全世界所有国家的文字编码，32个bit，4个byte，包含了ASCII。 4，UTF-8：可变长度的万国码，是unicode的一种实现，最小字符占8位 英文：8bit 1byte 欧洲文字：16bit 2byte 中文：24bit 3byte 综上，除了ASCII码以外，其他信息不能直接转换。 在python3的内存中，在程序运行阶段使用的是unicode编码，因为unicode是万国码，什么内容都可以进行显示，那么在数据传输和存储的时候由于unicode比较浪费空间和资源，需要把unicode转存成UTF-8或者GBK进行存储，怎么转换呢，在python中可以把文字信息进行编码，编码之后的内容就可以进行传输了，编码之后的数据是bytes类型的数据，其实啊，还是原来的数据只是经过编码之后表现形式发生了改变而已。 总结：  ASCII码英文占8位 1个字节 Unicod英文占32位 4个字节 Unicode中文占32位 4个字节 utf8英文占8位 1个字节 utf8中占16位 2个字节 gbk英文占8位 1个字节 gbk中文占16位 2个字节  bytes的表现形式 1，英文 b'alex'，英文的表现形式和字符串没什么两样； 2，中文b'\xe4\xb8\xad'，这是一个汉字的UTF-8的bytes表现形式； # 编码： s0 = "alex" print(s0.encode("utf-8")) # 将字符串编码成UTF-8，结果为：b'alex' print(s0.encode("GBK")) # 将字符串编码成GBK，结果为：b'alex' s = "中" s1 = s.encode("UTF-8") # 中文编码成UTF-8，结果为：b'\xe4\xb8\xad' s2 = s.encode("GBK") # 中文编码成GBK，结果为：b'\xd6\xd0' # 解码： print(s1.decode("UTF-8")) # 结果为：中 print(s2.decode("GBK")) # 结果为：中  转载于:https://www.cnblogs.com/wqzn/p/9406644.html 展开全文 • 下面小编就为大家带来一篇详谈js对url进行编码和解码(三种方式的区别)。小编觉得挺不错的，现在就分享给大家，也给大家做个参考。一起跟随小编过来看看吧 • is==的区别 1. id() 通过id()我们可以查看到⼀个变量表⽰的值在内存中的地址. s = 'alex' print(id(s)) # 4326667072 s = "alex" print(id(s)) # 4326667072 lst = [1, 2, 4] print(id(lst)) # ... ⼀. is和==的区别 1. id() 通过id()我们可以查看到⼀个变量表⽰的值在内存中的地址. s = 'alex' print(id(s)) # 4326667072 s = "alex" print(id(s)) # 4326667072 lst = [1, 2, 4] print(id(lst)) # 4326685768 lst1 = [1, 2, 4] print(id(lst1)) # 4326684360 # 结果⼀致, 但是在终端中是不⼀致的. 所以在python中,命令⾏代码和py⽂ 件中的代码运⾏的效果可能是不⼀样的 s1 = "@1 2 " s2 = "@1 2 " print(id(s1)) print(id(s2)) ⼩数据池(常量池): 把我们使⽤过的值存储在⼩数据池中.供其他的变量使⽤. ⼩数据池给数字和字符串使⽤, 其他数据类型不存在. 对于数字: -5~256是会被加到⼩数据池中的. 每次使⽤都是同⼀个对象. 对于字符串: 1. 如果是纯⽂字信息和下划线. 那么这个对象会被添加到⼩数据池 2. 如果是带有特殊字符的. 那么不会被添加到⼩数据池. 每次都是新的 3. 如果是单⼀字⺟*n的情况. 'a'*20, 在20个单位内是可以的. 超过20个单位就不会添加 到⼩数据池中 注意(⼀般情况下): 在py⽂件中. 如果你只是单纯的定义⼀个字符串. 那么⼀般情况下都是会 被添加到⼩数据池中的. 我们可以这样认为: 在使⽤字符串的时候, python会帮我们把字符串 进⾏缓存, 在下次使⽤的时候直接指向这个字符串即可. 可以节省很多内存. 这个问题千万不要纠结. 因为官⽅没有给出⼀个完美的结论和定论.所以只能是⾃⼰摸索. 注意. is比较的就是id()计算出来的结果. 由于id是帮我 们查看某数据(对象) 的内存地址. 那么is比较的就是数据(对象)的内存地址. 最终我们通过is可以查看两个变量使⽤的是否是同⼀个对象. == 双等表⽰的是判断是否相等, 注意. 这个双等比较的是具体的值.⽽不是内存地址 s1 = "哈哈" s2 = "哈哈" print(s1 == s2) # True print(s1 is s2) # True 原因是有⼩数据池的存在 导致两个变量指向的是同⼀个对象 l1 = [1, 2, 3] l2 = [1, 2, 3] print(l1 == l2) # True, 值是⼀样的 print(l1 is l2) # False, 值是假的 总结: is 比较的是地址 == 比较的是值 二、编码解码的问题 编码的补充 1. python2中默认使⽤的是ASCII码. 所以不⽀持中⽂. 如果需要在Python2中更改编码. 需要在⽂件的开始编写: # -*- encoding:utf-8 -*- 2. python3中: 内存中使⽤的是unicode码. 编码回顾: 1. ASCII : 最早的编码. ⾥⾯有英⽂⼤写字⺟, ⼩写字⺟, 数字, ⼀些特殊字符. 没有中⽂, 8个01代码, 8个bit, 1个byte2. GBK: 中⽂国标码, ⾥⾯包含了ASCII编码和中⽂常⽤编码. 16个bit, 2个byte 3. UNICODE: 万国码, ⾥⾯包含了全世界所有国家⽂字的编码. 32个bit, 4个byte, 包含了 ASCII 4. UTF-8: 可变⻓度的万国码. 是unicode的⼀种实现. 最⼩字符占8位 1.英⽂: 8bit 1byte 2.欧洲⽂字:16bit 2byte 3.中⽂:24bit 3byte 综上, 除了ASCII码以外, 其他信息不能直接转换. 在python3的内存中. 在程序运⾏阶段. 使⽤的是unicode编码. 因为unicode是万国码. 什么内 容都可以进⾏显⽰. 那么在数据传输和存储的时候由于unicode比较浪费空间和资源. 需要把 unicode转存成UTF-8或者GBK进⾏存储. 怎么转换呢. 在python中可以把⽂字信息进⾏编码. 编码之后的内容就可以进⾏传输了. 编码之后的数据是bytes类型的数据.其实啊. 还是原来的 数据只是经过编码之后表现形式发⽣了改变⽽已. bytes的表现形式: 1. 英⽂ b'alex' 英⽂的表现形式和字符串没什么两样 2. 中⽂ b'\xe4\xb8\xad' 这是⼀个汉字的UTF-8的bytes表现形式 字符串在传输时转化成bytes=> encode(字符集)来完成 s = "alex" print(s.encode("utf-8")) # 将字符串编码成UTF-8 print(s.encode("GBK")) # 将字符串编码成GBK 结果: b'alex' b'alex' s = "中" print(s.encode("UTF-8")) # 中⽂编码成UTF-8 print(s.encode("GBK")) # 中⽂编码成GBK 结果: b'\xe4\xb8\xad' b'\xd6\xd0' 记住: 英⽂编码之后的结果和源字符串⼀致. 中⽂编码之后的结果根据编码的不同. 编码结果 也不同. 我们能看到. ⼀个中⽂的UTF-8编码是3个字节. ⼀个GBK的中⽂编码是2个字节. 编码之后的类型就是bytes类型. 在⽹络传输和存储的时候我们python是保存和存储的bytes类型. 那么在对⽅接收的时候. 也是接收的bytes类型的数据. 我们可以使⽤decode()来进⾏解 码操作. 把bytes类型的数据还原回我们熟悉的字符串: s = "我叫李嘉诚" print(s.encode("utf-8")) # b'\xe6\x88\x91\xe5\x8f\xab\xe6\x9d\x8e\xe5\x98\x89\xe8\xaf\x9a' print(b'\xe6\x88\x91\xe5\x8f\xab\xe6\x9d\x8e\xe5\x98\x89\xe8\xaf\x9a'.decod e("utf-8")) # 解码 编码和解码的时候都需要制定编码格式. s = "我是⽂字" bs = s.encode("GBK") # 我们这样可以获取到GBK的⽂字 # 把GBK转换成UTF-8 # ⾸先要把GBK转换成unicode. 也就是需要解码 s = bs.decode("GBK") # 解码 # 然后需要进⾏重新编码成UTF-8 bss = s.encode("UTF-8") # 重新编码 print(bss) 作业： 现有主播字典信息zhubo={"卢本纬":12200,"冯提莫":18999,"金老板":2500000}，按要求完成一下的操作 1、计算主播的平均工资 sum=0 for value in zhubo.values(): sum=sum+value avg=sum/len(zhubo) print(avg) 2、删掉收益小于平均值的主播 再循环体内删除是不允许的，结果操作报如下错 sum=0 for value in zhubo.values(): sum=sum+value avg=sum/len(zhubo) print(avg) list=[] for k,v in zhubo.items(): if zhubo[k]<avg: list.append(k) for i in list: zhubo.pop(i) print(zhubo) 车牌号区域划分 cars=["鲁A32444","鲁812333","京88989M","黑C49678","黑46555","沪825041"] locals={"沪":"上海","黑":"黑龙江","鲁":"山东","京":"北京"} 划分结果如下：{'上海': 1, '黑龙江': 2, '山东': 2, '北京': 1} list=[] dic={} for i in cars: list.append(i[0]) for k,v in locals.items(): if k not in list: continue else: dic[v]=list.count(k) print(dic)  展开全文 • 一. id(变量) 获取变量内存地址 小数据池(常量池): ① 字符串(单一字母重复20次以内可以,其他字符串都可以,图片里是错误... 编码和解码 内存中用是unicode,硬盘和网络传输用是UTF-8或者GBK encode() 编码,... • 一.is==的区别 python中对象包含的三个基本要素分别是:id(身份标识),type(数据类型),value(值) is==都是对对象进行比较判断的,但对对象比较判断的内容不同. ★==是python标准操作符中的比较操作符,用来判断两... • 一、is 和 == 的区别 # is: 比较 比较内存地址； # id ()获取内存地址 小数据池： l数字小数据池是-5~256 （内存取值范围，超出范围内存地址就不相同了。） l字符串终不能包含特殊符号如：！...二、编码和... • true == 是比较两边值 2.a="alex " b="alex" print(a==b)==> true is是比较内存地址 3.a ='alex' print (id(a)) # 36942544 内存地址 #小数据库 -5--256 不过python不适用 因为 python是根据自己使用方便... • is 是指比较两者内存地址是否相等 “==" 是指比较两者值是否相等。 小数据池 数字小数据池范围 -5---256 字符串：字符串*20内内存地址一样，单个*21...编码是指把unicode明文转换成想要类型编码 解码是... • JavaScript 中encodeURI,encodeURIComponent与escape的区别和注意大家在使用JS提交数据时，尤其是中文的时候，经常会需要将要提交的字符串进行URL编码。在JS中对字符串进行URL编码有好几种方 法，encodeURI，... • 一、is == 1. == 比较，比较左右两端值是否相等 2. is 比较，比较是内存地址 id() 获取内存 a = 'abc' print(id(a)) li = [1,2,3] print(id(li)) a = 'abc!' b = 'abc!' print... • Python中’is’’=='的区别,以及编码解码 • 一.is == 的区别: 1 .id() 内存地址 2. == 比较 #比较两边的值 3. is 比较 #比较的是内存地址 数字,字符串,有小数据池 #数字小数据池 : -5~256 特点:节省内存 #.字符串中如果有特殊字符,那么不会... • 一、is==的区别 1，id( ) id( )是python的一个内置函数，通过id( )我们可以查看到一个变量表的值在内存中的地址： s1 = 2 print(id(s1)) # 1514368064 s2 = 2 print(id(s2)) # 1514368064 s3 = '... • 1、is==的区别 1）id() 通过id()我们可以查看到一个变量表示的值在内存中的地址 >>> s1 = "Tanxu" >>> s2 = "Tanxu" >>> id(s1) 49754608 >>> id(s2) 49754608 >... • 一、is==的区别 1，id( ) id( )是python的一个内置函数，通过id( )我们可以查看到一个变量表的值在内存中的地址： s = 2 print(id(s)) # 1514368064 s = 2 print(id(s)) # 1514368064 s = '... • 在介绍is与==的区别前，我们先来了解一些新的知识：内存地址、小数据池。 1.内存地址(is 比较的就是内存地址) 获取内存地址的方法：id() 1 a = "str" 2 print(id(a)) #1526192138144 2.小数据池 ... • 3、encodeURIencodeURIComponent区别： —— 该两种方法不会对 ASCII 字母数字进行编码，也不会对这些 ASCII 标点符号进行编码： - _ . ! ~ * ’ ( ) 。 —— encodeURI目的是对 URI 进行完整的编码，因此对... • 一:is == 区别 1. is 比较内存地址 1)id() ---- 获取内存地址 2)小数据池: a.数字小数据池范围是 -5 ~ 256 b.字符串: 字符串中不能包含特殊符号 + - * / @ 等等 字符串单个字符*20以内内存地址都是一样,单个... • js对url进行编码和解码（三种方式区别） *** 只有 0-9[a-Z]$ - _ . + ! * ’ ( ) , 以及某些保留字，才能不经过编码直接用于 URL。 ***例如：搜索中文关键字，复制网址之后再粘贴就会发现该URL已经被转码。 1、...

...