精华内容
下载资源
问答
  • 您不希望python二进制文件中的任何字符隐式转换为其他字符。Python不知道它正在读取二进制文件,除非您告诉它。当python读取文本文件时,它会自动将\n任何字符转换为操作系统的换行符,在Windows上是\r\n这是所有...

    I feel binary data don't have such things like end-of-line.

    二进制文件中可以包含任何可能的字符,包括字符\n。您不希望python将二进制文件中的任何字符隐式转换为其他字符。Python不知道它正在读取二进制文件,除非您告诉它。当python读取文本文件时,它会自动将\n任何字符转换为操作系统的换行符,在Windows上是\r\n

    这是所有计算机编程语言的工作方式。在

    另一种思考方法是:一个文件只是一个长的字节序列(8位)。字节只是一个整数。字节可以是任意整数。如果一个字节恰好是整数10,那么这也是字符的ascii代码。\n如果文件中的字节表示二进制数据,则不希望Python读入10并将其转换为两个字节:13和10。通常当你读二进制数据时,你想读,比如说,前2个字节代表一个数字,然后4个字节代表另一个数字,等等。。显然,如果python突然将其中一个字节转换为两个字节,那将导致两个问题:1)它改变了数据;2)所有的数据边界都将混乱。在

    举个例子:假设文件的第一个字节代表一只狗的体重,这个字节的值是10。下一个字节代表狗的年龄,它的值是1。如果Python将10(ascii代码)转换为两个字节:10和13,那么Python提供的数据将如下所示:

    1013年1月

    当你提取狗的年龄的第二个字节时,你得到的是13而不是1。在

    我们经常说一个文件包含“字符”,但这显然是错误的。计算机不能存储字符,只能存储数字。所以一个文件就是一长串的数字。如果告诉python将这些数字视为表示字符的ascii代码,那么python将给您文本。在

    展开全文
  • 除了常用的十进制表示法,Python 也支持二进制、八进制和十六进制表示法。这些只是表示方法不同,但是它们表示的含义是一样的,如二进制中的 11 和十进制数中的 3 是一样的。1. Python 二进制表示法如十进制中的 100...

    除了常用的十进制表示法,Python 也支持二进制、八进制和十六进制表示法。这些只是表示方法不同,但是它们表示的含义是一样的,如二进制中的 11 和十进制数中的 3 是一样的。

    1. Python 二进制表示法

    如十进制中的 100 用二进制表示就是 1100100,那么 100 就可以用 0b1100100 来表示。

    >>> a = 0b1100100 # 二进制1100100

    >>> a # 查看其值,默认用十进制表示

    100 # 对应到十进制就是100

    用 0B 也可以表示二进制数,效果和 0b 是一样的,如十进制的 100 也可以用 0B1100100 来表示。

    >>> a = 0B1100100

    >>> a

    100

    另外一个问题就是,如果知道了某个数的值,如何知道其二进制的表示法?Python 提供了一个函数 bin(),该函数输入是整数,输出是用二进制表示的字符串。如 bin(100) 就输出字符串 '0b1100100'。

    >>> a = bin(100) # 得到十进制数100的二进制表示法

    >>> a # 查看二进制表示法的值

    '0b1100100'

    >>> type(a) # 注意返回值是一个字符串

    >>> b = bin(3) # 得到十进制数3的二进制表示法

    >>> b

    '0b11'

    如果得到的是字符串,表示一个二进制数,如何将其转换成整数对象呢?可以使用函数 eval()。eval() 输入是字符串,返回值是一个整数对象。

    >>> a = eval('0b1100100') # 输入是字符串

    >>> type(a) # 返回值类型是整型

    >>> a # 返回值的内容

    100

    还有一个可以使用的函数就是 int(),其实际上是整型的构造函数。该构造函数可以从字符串对象构造出整型对象,而且在构造时指定进制。和函数 eval() 不同,字符串不能以 0b 开头,并且要指定进制。

    还是以 100 为例,输入是字符串 '1100100' 而不是 '0b 1100100'。并且带上进制参数 2,所以就可以用 int('1100100',2) 来构造值为二进制 1100100 的整数对象。

    >>> a = int("1100100", 2) # 按照二进制的方式解析字符串"1100100",

    >>> type(a) # 返回值的类型是整型

    >>> a # 返回值的内容是100

    100

    int() 还可以指定第二个参数为 0,这时第一个参数就可以带上 0b。int() 看到第二个参数为 0,就会从第一个参数的 0b 上猜出应该按照二进制来解析输入的字符串。

    >>> a = int("0b1101", 0) # 第二个参数为0,第一个参数带有0b,所以按照二进制解析

    >>> type(a) # 返回值类型是整数

    >>> a # 返回值的值为十进制的13

    13

    2. Python 八进制表示法

    类似于二进制表示法,在数字之前加上 0 用来表示其为八进制数。

    >>> a = 012 # 八进制数12,等同于10进制的10

    >>> type(a)

    >>> a # 查看a的值,默认是用十进制表示的

    10

    同样的问题,如何将一个整数转换成八进制的字符串?系统提供的函数是 oct(),其输入是整数对象,输出是一个字符串,该字符串也是以 0 开头。如数 oct(10) 就输出 '012'。

    >>> out_str = oct(10) # 转换成字符串类型,按照八进制的格式转换

    >>> type(out_str) # 返回值的类型是字符串

    >>> out_str # 查看返回值的内容

    '012'

    >>> out_str = oct(100) # 对100进行八进制转换

    >>> out_str # 查看转换结果

    '0144'

    如何从用八进制表示的字符串构造出整数对象呢?前面介绍的 eval() 和 int() 方法依然有效。使用 eval() 时需要输入字符串以 0 开头,这样 eval() 就知道输入的数是八进制表示的。

    >>> a = eval('012') # 将字符串转换成整数,八进制格式表示的字符串

    >>> type(a) # 查看返回值的类型

    >>> a # 查看返回值的内容

    10

    >>> a = eval('0144') # 将八进制字符串144转换成整数

    >>> a # 查看返回值的内容

    100

    使用 int() 来将字符串转换成整数,需要将第二个参数设定为 8,表示用八进制来解释该字符串,并且输入字符串不必以 0 开头。但是以 0 开头也不会有问题,因为 0 会被忽略掉,如 02 和 2 表示的意思是一样的。

    >>> a = int('144', 8) # 八进制数144,没有以0开头

    >>> type(a) # 输出的类型是整数

    >>> a # 查看a的值,十进制表示为100

    100

    >>> a = int('0144', 8) # 0144等效于144

    >>> a # 但是0b11不等效于11

    100

    >>> a = int('12', 8) # 八进制数12

    >>> a

    10

    和二进制表示法一样,如果第二个参数为 0,并且第一个参数以 0 开头,那么 int() 将试图按照八进制来解析输入的第二个参数。例如:

    >>> a = int("0144", 0) # 第二个参数为0,那么从第一个参数猜出进制

    >>> type(a) # 由于第一参数以0开头,所以应该是八进制表示

    # 返回值类型是整型

    >>> a # 返回值是100,即八进制的144对应十进制的100

    100

    3. Python 十六进制表示法

    十六进制表示法在数字前面加上 0x 或者 0X 来表示,除了用数字 0、1、…、9 这 10 个字符外,还引入了 a、b、c、d、e、f 这 6 个字符,分别表示 10、11、12、13、14 和 15。如十进制中的 15 用十六进制来表示就是 0xF 或者 0Xf。

    需要注意的是,a、b、c、d、e、f 也可以用 A、B、C、D、E、F 来表示。

    >>> a = 0xf # 0x开头表示是十六进制数

    >>> a

    15

    >>> a = 0XF # 0X开头表示是十六进制数

    >>> a

    15

    >>> a = 0Xf

    >>> a

    15

    如果希望将整数转换成十六进制的字符串,可以使用函数 hex()。该函数输入是一个整型对象,输出是字符串。该输出字符串表示用十六进制表示该输入整数的格式。

    >>> a = hex(9) # 转换成十六进制表示的字符串

    >>> type(a) # 返回的是字符串

    # 查看返回值的内容

    >>> a

    '0x9'

    >>> b = hex(16) # 将十进制的16转换成十六进制表示的字符串

    >>> b

    '0x10' # 转换后的结果

    如果希望做 hex() 的逆操作,可以使用 eval()。

    >>> a = 100

    >>> b = eval(hex(a)) # 先用hex()转换成十六进制表示的字符串

    >>> type(b) # 然后用eval()将字符串转换成整型对象

    # 返回值的类型是整型

    >>> b # 经过两轮互逆的运算后还是得到最初的值100

    100

    如果输入的字符串不带开头的 0x 或者 0X,那么可以用 int() 来构造一个等值的整型对象。例如,还和前面一样,第二个参数为 16。

    >>> a = int('64', 16) # 输入是十六进制表示的64

    >>> type(a) # 返回值是一个整型对象

    >>> a # 值为100,对应十六进制中的64

    100

    和前面的二进制、八进制一样,如果第二个参数为 0,第一个参数以 0x 开头,那么 int() 会将第二个参数当作十六进制来解释。例如:

    >>> a = int("0x64", 0) # 第二个参数为0,所以从第一个参数猜出进制

    >>> type(a) # 第一个参数开头是0x,所以按照十六进制解析

    >>> a # 解析结果是十进制的100

    100

    另外,int() 函数不仅可以用于转换二进制数、八进制数和十六进制数,也可以用于转换任意进制的数。对于 16,其用 F 后面的 G 来表示,17 用 H 来表示,其他值的表示法以此类推。下面的例子演示了 17 进制数的使用。

    >>> int('F', 17) # F表示15

    15

    >>> int('G', 17) # G表示16

    16

    展开全文
  • python 二进制运算 将二进制值分配给变量 (Assign binary value to the variable) To assign binary values to the variable, we use prefix 0b or 0B with the binary value. 要将二进制值分配给变量,我们在...

    python 二进制运算

    将二进制值分配给变量 (Assign binary value to the variable)

    To assign binary values to the variable, we use prefix 0b or 0B with the binary value.

    要将二进制值分配给变量,我们在二进制值中使用前缀0b或0B 。

    Example:

    例:

    # assign number as binary 
    # prefix 0b 
    num = 0b111101
    print "num: ", num
    
    # prefix 0B 
    num = 0B111101
    print "num: ", num
    
    

    Output

    输出量

    num:  61
    num:  61
    
    

    将十进制值转换为二进制 (Convert a decimal value to binary)

    To convert a decimal value to the binary, we use bin() Method, which is an inbuilt method in the Python.

    要将十进制值转换为二进制,我们使用bin()方法,这是Python中的内置方法。

    Example: Python program, that returns a binary value of given decimal value

    示例: Python程序,该程序返回给定十进制值的二进制值

    num = 61
    # print num in decimal and binary format 
    print "num (decimal) : ", num
    print "num (binary ) : ", bin (num)
    
    

    Output

    输出量

    num (decimal) :  61
    num (binary ) :  0b111101
    
    

    将二进制值转换为十进制 (Convert binary value to decimal)

    When, we print the binary value – there is no need to convert it; print prints the value in decimal format, like

    何时,我们打印二进制值–无需转换它; print以十进制格式打印值,例如

    print 0b111101 - its output will be 61.

    打印0b111101-其输出将为61。

    Still, we can use int() method to convert it into decimal by defining base of the number system.

    仍然,我们可以使用int()方法通过定义数字系统的基数将其转换为十进制。

    Example:

    例:

    # print by using binary value
    print  0b111101
    # print by converting to decimal
    print int ('0b111101 ', 2)
    
    

    Output

    输出量

    61
    61
    
    

    按位OR(|)和AND(&)运算 (Bitwise OR (|) and AND (&) Operations)

    Here is the bitwise OR (|) and Bitwise AND (&) Operations:

    这是按位OR(|)和按位AND(&)操作:

    Example:

    例:

    a = 0b111101
    b = 0b000010
    
    # print value in binary 
    print "values in binary..."
    print "a: ",bin (a)
    print "b: ",bin (b)
    
    # bitwise OR and AND operations
    print "(a|b) : ", bin (a|b)
    print "(a&b) : ", bin (a&b)
    
    # print values in decimal 
    print "values in decimal..."
    print "a: ",a 
    print "b: ",b 
    
    # bitwise OR and AND operations 
    print "(a|b) : ", int (bin (a|b),2)
    print "(a&b) : ", int (bin (a&b),2)
    
    

    Output

    输出量

    values in binary...
    a:  0b111101
    b:  0b10
    (a|b) :  0b111111
    (a&b) :  0b0
    values in decimal...
    a:  61
    b:  2
    (a|b) :  63
    (a&b) :  0
    
    
    

    翻译自: https://www.includehelp.com/python/binary-numbers-representation.aspx

    python 二进制运算

    展开全文
  • 在计算机进行数据交换时,常常会有一个进制转换的过程,有时候数据过于庞大,为了方便存储管理,计算机会使用十六进制存储数据,Python一般采用int类型是十进制,作为硬件行业采用Python处理二进制、十六进制数据...


    在计算机进行数据交换时,常常会有一个进制转换的过程,有时候数据过于庞大,为了方便存储管理,计算机会使用十六进制存储数据,Python一般采用int类型是十进制,作为硬件行业采用Python处理二进制、十六进制数据成为必然。

    一、pyhton 进制转换

    1.1 十进制转为二、八、十六进制

    方法一:函数直转

    十进制转二进制:bin(10) --> '0b1010' tpye:是字符串类型 0b:表示2进制
    十进制转八进制:oct(10) --> '0o12'   tpye:是字符串类型 0o:表示8进制
    十进制转十六进制:hex(10) --> '0xa'    tpye:是字符串类型 0x:表示16进制
    

    方法二:Format格式

    >>> '{:b}'.format(9)   --> '1001'
    >>> '{:o}'.format(9)   --> '11'
    >>> '{:x}'.format(10)  --> 'a'
    

    两种方式会影响到打印,但是python还是可以识别出已转化的数据。

    1.2 二、八、十六进制转为十进制

    方法一:int()函数

    int('0b1010',2) --> 10 或者 int('1010',2) --> 10  
    int('0o12',8)   --> 10 或者 int('12',8)   --> 10  
    int('0xa',16)   --> 10 或者 int('a',16)   --> 10
    

    方法二:eval函数

    >>> eval('1111')       -->1111
    >>> eval('0b1111')     -->15
    >>> eval('0o1111')     -->585
    >>> eval('0x1111')     -->4369
    

    (x,y)括号中x是需要转换的数值type必须是str字符串类型,y是当前进制数

    1.3 将十进制转换为固定长度的多进制类型

    方法一:Format

    >>> '{:08b}'.format(9)     -->'00001001'
    >>> '{:06o}'.format(9)     -->'000011'
    >>> '{:06x}'.format(9)     -->'000009'
    备注:'{:08b}'.format(9) # :b表示转换为二进制,08表示高位用0补够8位
    

    方法二:str.zfill

    >>> a =bin(5)[2:]
    >>> print(a)               -->101
    >>> c = str.zfill(a,8)
    >>> print(c)               -->00000101
    
    >>> a =oct(9)[2:]
    >>> print(a)               -->11
    >>> c = str.zfill(a,8)
    >>> print(c)               -->00000011
    
    >>> a =hex(20)[2:]#去掉前面0b
    >>> print(a)               -->14
    >>> a =hex(20)
    >>> print(a)               -->'0x14'
    >>> str.zfill(a,8)         -->'00000x14'
    

    二、Python二进制单比特操作

    硬件中对于二进制数据的单比特操作是很常见的,verilog中也将每一比特单独的信号线作为区分,可以单比特调用。Python中虽然二进制数据也区分比特,但是获取更改某一比特却没有直接函数,参考文档【3】编写读取、调用函数。

    得到某个字节中某一位(Bit)的值

    :param byte: 待取值的字节值

    :param index: 待读取位的序号,从右向左0开始,0-7为一个完整字节的8个位

    :returns: 返回读取该位的值,0或1

    def get_bit_val(byte, index):
        if byte & (1 << index):
    		return 1
    	else:
    		return 0
    

    更改某个字节中某一位(Bit)的值

    :param byte: 准备更改的字节原值

    :param index: 待更改位的序号,从右向左0开始,0-7为一个完整字节的8个位

    :param val: 目标位预更改的值,0或1

    :returns: 返回更改后字节的值

    def set_bit_val(byte, index, val):
    	if val:
    		return byte | (1 << index)
    	else:
    		return byte & ~(1 << index)
    

    参考文档

    【1】用Python实现进制转换,这一篇教程就够了

    【2】python–>二进制的用法

    【3】python获取二进制bit位_Python读字节某一位的值,设置某一位的值,二进制位操作…

    展开全文
  • Python中进行进制的转换可以通过它的内置函数来实现,今天小编我就来分享一下使用Python进行二进制,十进制,八进制的转换经验。工具/原料电脑Python方法/步骤1第一步,打开电脑的cmd命令窗口,然后进入Python解释器...
  • python没有二进制类型,但可以存储二进制类型的数据,就是用string字符串类型来存储二进制数据,这也没关系,因为string是以1个字节为单位的。import structa=12.34#将a变为二进制bytes=struct.pack('i',a)此时bytes...
  • 利用python进行二进制、十进制、十六进制相互转换和二进制移位操作1 二进制与十进制相互转换2 十六进制与十进制相互转换3 二进制与十六进制的相互转换4 高位补零5 二进制移位 1 二进制与十进制相互转换 通过python...
  • python处理二进制文件(.bin)

    万次阅读 多人点赞 2019-02-11 16:30:33
    最近遇到了python处理二进制文件的一些问题,简单地罗列一下。 什么是二进制文件 扩展名为.bin的文件就是一个二进制文件,可以直接用一个叫winhex的软件打开 二进制文件读写 bytes类型转化 这里写自定义目录...
  • python定义二进制Binary is a numbering system used to express numbers in 2 states. These two states are 0 and 1. The binary numbering system is very important for computer and IT systems because of the...
  • 再用2去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止,然后依次翻转排序即可得到二进制数,在Python中我们采”//”(地板除)的方法实现转换 # 十...相关推荐2019-12-08 11:59 −1、给定一个由整数...
  • Python基于二进制求子集 若一个集合有nnn个元素,则其有2n−12^n-12n−1个子集; 集合种的每一个元素都只有两种状态:在或不在子集中; 可以通过二进制或向量表示元素在或不在子集的状态,例如:集合{a,b,c},当所有...
  • python没有二进制类型,但可以存储二进制类型的数据,就是用string字符串类型来存储二进制数据,这也没关系,因为string是以1个字节为单位的。import structa=12.34#将a变为二进制bytes=struct.pack("i",a...
  • 总的感觉,python本身并没有对二进制进行支持,不过提供了一个模块来弥补,就是struct模块。 python没有二进制类型,但可以存储二进制类型的数据,就是用string字符串类型来存储二进制数据,这也没关系,因为...
  • python二进制、八进制、十六进制数表示 二进制:>>> abin = 0b1000 >>> abin 8 八进制:>>> aoct = 0o123 (数字0,字母o) >>> aoct 83 十六进制:>>> ahex = 0xAB  >>> ahex 171
  • 题目描述:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。分析:如果一个整数不为0,那么这个整数至少有一位是1。如果我们把这个整数减1,那么原来处在整数最右边的1就会变为0,原来在1后面的...
  • 总的感觉,python本身并没有对二进制进行支持,不过提供了一个模块来弥补,就是struct模块。 python没有二进制类型,但可以存储二进制类型的数据,就是用string字符串类型来存储二进制数据,这也没关系,因为string...
  • python中二进制整数Given an integer number and we have to find necessary bits ... 给定一个整数,我们必须找到必要的位以用python二进制表示它 。 To find necessary bits to represent a number – we use "b...
  • python处理二进制数据

    千次阅读 2013-02-19 02:03:22
    python处理二进制数据 分类: Python 2011-09-01 14:01 567人阅读 评论(0) 收藏 举报   有的时候需要用python处理二进制数据,比如,存取文件,socket操作时.这时候,可以使用python的struct...
  • python文件二进制加密

    千次阅读 2018-04-19 09:26:04
    简介:简单的文本文件加密:输入待加密文件和n,将文件转成二进制文件,对原始文件为n的整数倍的字节处将二进制数据取反进行加密,解码时再对这些二进制取反,中间储存过程都是二进制文件,达到简单的加密效果。...
  • python十进制转二进制python中十进制转二进制使用 bin() 函数。bin() 返回一个整数 int 或者长整数 long int 的二进制表示。下面是使用示例:>>>bin(10)'0b1010'>>> bin(20)'0b10100'补充:十进制转8进制和16进制的...
  • python:二进制、八进制、十六进制

    千次阅读 2019-06-18 20:04:10
    二进制:0b**** 如:0b11011 二进制转换成十进制: print(int("11011",2)) 十进制转换成二进制:bin 八进制:0o**** 十进制转换成八进制oct 十六进制:0x**** 十进制转换成十六进制:hex 具体实例: #输出...
  • python读写二进制文件

    千次阅读 2018-05-03 09:59:55
    使用pickle模块进行二进制文件的读写 基本接口 代码实现 使用pickle模块进行二进制文件的读写 python的pickle模块实现了基本的数据序列和反序列化。通过pickle模块的序列化操作我们能够将程序中运行的...
  • 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示python实现的时候,按照剑指offer的方法(循环用while n ),输入负数的时候,代码总是会陷入无限循环 两种解决方案: while n 改为 for i in ...
  • python八进制转二进制Python is known for being powerful and easy to use when it comes to math. Both its native capabilities and resourceful libraries like NumPy, Pandas, or Scikit-learn, provide ...
  • PYTHON : 二进制 、 八进制 、十六进制的转换和输出 十进制转换成其他进制 保存为文本串 二进制 bIn() 八进制 oct() 十六进制 hex() 不输出前缀 使用format函数 如果不想输出进制前面的 前缀符号 , 这时...
  • python二进制位运算

    千次阅读 2019-06-13 10:15:57
    只要在数字前面加上0b的字符,就可以用二进制表示十进制数了。 print(0b101) #5 print(0b10001) #17 随后,在python的函数中,有一个bin()函数,直接可以将输入的十进制数,转换成二进制 print(bin(5)) #0b101 ...
  • 二进制下两数求和,分三步: 各位值相加,不算进位值,二进制亦或运算 计算进位值,二进制与运算,然后左移一位; 对1,2步的结果,重复以上两步骤 两数之和就是不计算进位值加上进位值,直到没有进位 第二部为...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 134,683
精华内容 53,873
关键字:

python表示二进制

python 订阅