精华内容
下载资源
问答
  • 数据类型转换是个很基础的操作,很多语言中都要做这些转换,例如前一段时间刚刚总结了《C/C++中string和int相互转换的常用方法》,python 自从分离出 python3 版本之后,`str` 和 `bytes` 两个类型弄蒙了一大票人,...

    前言

    数据类型转换是个很基础的操作,很多语言中都要做这些转换,例如前一段时间刚刚总结了《C/C++中string和int相互转换的常用方法》,python 自从分离出 python3 版本之后,strbytes 两个类型弄蒙了一大票人,在这两种类型的转换上我可是花了不少时间,记住一点,别随随便便使用 str() 函数,很多数据使用 str() 变成字符串之后再想恢复可就难了。

    本文所有示例均在 Python 3.7.5 上测试,Python2 已经被我抛弃了,我来试着把常见的转换都放到一起,把踩过的坑拿来开心一下,如果有些常用的类型转换这里没有的话,也欢迎小伙伴们提出来,我将持续补充,好了,可以开始了。

    数据类型转化

    数字中除了整数,还有浮点数、复数等,但是 int 是最常见的类型,所有转换中的数字只涉及 int 数字类型。

    int -> str

    使用 str() 函数

    num = 10
    val = str(10)
    print(type(val), val)
    
    #<class 'str'> 10
    

    使用 format() 函数

    num = 10
    val = '{0}'.format(num)
    print(type(val), val)
    
    #<class 'str'> 10
    

    使用 hex() 转换成16进制形式

    num = 10
    val = hex(num)
    print(type(val), val)
    
    #<class 'str'> 0xa
    

    使用 bin() 转换成2进制形式

    num = 10
    val = bin(num).replace('0b','')
    print(type(val), val)
    
    #<class 'str'> 1010
    

    str -> int

    这个转换比较专一,只使用 int() 函数就可以了,这个函数实际上有两个参数,第二个参数表示进制,默认是10进制,你可以改成2进制或者16进制,甚至是3进制、5进制等等

    使用 int() 进行各进制数字转换

    val = int('10')
    print(type(val), val)
    
    val = int('0xa', 16)
    print(type(val), val)
    val = int('a', 16)
    print(type(val), val)
    
    val = int('0b1010', 2)
    print(type(val), val)
    val = int('1010', 2)
    print(type(val), val)
    
    val = int('101', 3)
    print(type(val), val)
    
    val = int('60', 5)
    print(type(val), val)
    
    # 结果均为 <class 'int'> 10
    

    使用 int() 函数的时候要主要注意一点,如果提供的字符串不能转换成指定进制的数字,那么会报异常,就像下面这样,所以在使用这个函数的时候最好放到 try 语句中。

    val = int('128', 2)
    
    '''
    Traceback (most recent call last):
      File "D:\python\convert\convert.py", line 41, in <module>
        val = int('128', 2)
    ValueError: invalid literal for int() with base 2: '128'
    [Finished in 0.1s with exit code 1]
    '''
    

    什么是bytes

    在列举 bytes 相关的转化前,我们来先认识一下这个类型,在 Python3 中 intstrbytes 类型的变量实际上都是一个 “类” 的对象,而 bytes 相比 str 而言更接近底层数据,也更接近存储的形式,它其实是一个字节的数组,类似于 C 语言中的 char [],每个字节是一个范围在 0-255 的数字。

    bytes 其实就是这样一连串的数字,计算机世界所有的信息都可以用这样一串数字表示,一幅画,一首歌,一部电影等等,如果对编码感兴趣可以看看这篇《简单聊聊01世界中编码和解码这对磨人的小妖儿》,现在清楚bytes是什么了,我们可以看看和它相关的转化了。

    int -> bytes

    使用 to_bytes() 转换成定长bytes

    num = 4665
    val = num.to_bytes(length=4, byteorder='little', signed=False)
    print(type(val), val)
    
    #<class 'bytes'> b'9\x12\x00\x00'
    

    这段代码就是把数字 4665 转化成定长的4个字节,字节序为小端,我们来简单看一下是怎么转换的:

    上面我们提到 bytes 类型一串 0-255 范围的数字,4665 肯定超出了这个范围,可以先转化成256进制,就变成了 <18><57>,也就是 4665 = 18 * 256 + 57,我们发现两个字节就能存储这个数字,一个18,一个57,要想组成4个字节的数组需要补充两个空位,也就是补充两个0,这时就涉及到一个排列顺序,是 [0,0,18,57] 还是 [57, 18, 0, 0] 呢,这就是函数参数中的字节序 byteorder,little 表示小端,big 表示大端,这里选择的小端 [57, 18, 0, 0] 的排列。

    看到这里可能会迷糊,好像和结果不一样啊,其实这只是一个表示问题,57 的 ASCII 码对应这个字符 ‘9’,18 表示成16进制就是 ‘0x12’,这里写成 b’9\x12\x00\x00’ 只是便于识别而已,实际上内存存储的就是 [57, 18, 0, 0] 这一串数字对应的二进制编码 ‘00111001 00010010 00000000 00000000’。

    使用 bytes() 函数把int数组转成bytes

    参考上面的生成的数组,可以通过数组生成相同的结果

    num_array = [57, 18, 0, 0]
    val = bytes(num_array)
    print(type(val), val)
    
    #<class 'bytes'> b'9\x12\x00\x00'
    

    使用 struct.pack() 函数把数字转化成bytes

    num = 4665
    val = struct.pack("<I", num)
    print(type(val), val)
    
    #<class 'bytes'> b'9\x12\x00\x00'
    

    这里的 "<I" 表示将一个整数转化成小端字节序的4字节数组,其他的类型还有:

    参数含义
    >大端序
    <小端序
    Buint8类型
    bint8类型
    Huint16类型
    hint16类型
    Iuint32类型
    iint32类型
    Luint64类型
    lint64类型
    sascii码,s前带数字表示个数

    bytes -> int

    明白了上面的转化过程,从 bytes 转化到 int 只需要反着来就行了

    使用 from_bytes() 把 bytes 转化成int

    bys = b'9\x12\x00\x00'
    val = int.from_bytes(bys, byteorder='little', signed=False)
    print(type(val), val)
    
    #<class 'int'> 4665
    

    使用 struct.unpack() 把 bytes 转化成int

    bys = b'9\x12\x00\x00'
    val = struct.unpack("<I", bys)
    print(type(val), val)
    
    #<class 'tuple'> (4665,)
    

    str 和 bytes

    前面的这些转化还算清晰,到了字符串str 和字节串 bytes,就开始进入了混沌的状态,这里会出现各种编码,各种乱码,各种报错,牢记一点 str 到 bytes 是编码过程,需要使用 encode() 函数, bytes 到 str 是解码过程,需要使用 decode() 函数,请勿使用 str 函数,否则后果自负。

    使用 encode() 函数完成 str -> bytes

    s = '大漠孤烟直qaq'
    val = s.encode('utf-8')
    print(type(val), val)
    
    # <class 'bytes'> b'\xe5\xa4\xa7\xe6\xbc\xa0\xe5\xad\xa4\xe7\x83\x9f\xe7\x9b\xb4qaq'
    

    使用 decode() 函数完成 bytes -> str

    bys = b'\xe5\xa4\xa7\xe6\xbc\xa0\xe5\xad\xa4\xe7\x83\x9f\xe7\x9b\xb4qaq'
    val = bys.decode('utf-8')
    print(type(val), val)
    
    # <class 'str'> 大漠孤烟直qaq
    

    假如使用了 str() 函数

    从上面来看字符串和字节串的转化蛮简单的,甚至比整数的转化都要简单,但是你如果把一个 bytes 变量用 str() 转化成字符串,你就得手动来处理了,这个函数写过n次了,暂时还没找到好的处理办法。

    bys = b'\xe5\xa4\xa7\xe6\xbc\xa0\xe5\xad\xa4\xe7\x83\x9f\xe7\x9b\xb4qaq'
    s = str(bys)
    print(type(s), s)
    #<class 'str'> b'\xe5\xa4\xa7\xe6\xbc\xa0\xe5\xad\xa4\xe7\x83\x9f\xe7\x9b\xb4qaq'
    
    def str2bytes(str_content):
        result_list = [];
        pos = 0
        str_content = str_content.replace("\\n", "\n").replace("\\t", "\t").replace("\\r", "\r")
        content_len = len(str_content)
        while pos < content_len:
            if str_content[pos] == '\\' and pos + 3 < content_len and str_content[pos + 1] == 'x':
                sub_str = str_content[pos + 2: pos + 4]
                result_list.append(int(sub_str, 16))
                pos = pos + 4
            else:
                result_list.append(ord(str_content[pos]))
                pos = pos + 1
        return bytes(result_list)
    
    val = str2bytes(s[2:-1])
    print(type(val), val)
    
    # <class 'bytes'> b'\xe5\xa4\xa7\xe6\xbc\xa0\xe5\xad\xa4\xe7\x83\x9f\xe7\x9b\xb4qaq'
    

    什么时候会遇到这种情况,就是有些数据是以 bytes 的形式给的,但是经过中间人复制转发变成了字节流形式的字符串,格式还不统一,有些已经翻译成了字符,有些还保留了0x或者\x形式,这时就要手工处理了。

    转化表格

    上面的转化方式和解释穿插在一起有些乱,这里总结一个表格,便于今后拿来就用

    源类型目标类型方式结果
    intstrstr(10)'{0}'.format(10)10 => '10'
    intstr(16进制)hex(10)10 => '0xa'
    intstr(2进制)bin(10).replace('0b','')10 => '1010'
    strintint('10')'10' => 10
    str(16进制)intint('0xa', 16)'0xa' => 10
    str(2进制)intint('1010', 2)'1010' => 10
    intbytesnum.to_bytes(length=4, byteorder='little', signed=False)4665 => b'9\x12\x00\x00'
    intbytesstruct.pack("<I", 4665)4665 => b'9\x12\x00\x00'
    bytesintint.from_bytes(b'9\x12\x00\x00', byteorder='little', signed=False)b'9\x12\x00\x00' => 4665
    bytesintstruct.unpack("<I", b'9\x12\x00\x00')b'9\x12\x00\x00' => 4665
    int[]bytesbytes([57, 18, 0, 0])[57, 18, 0, 0] => b'9\x12\x00\x00'
    bytesint[][x for x in b'9\x12\x00\x00']b'9\x12\x00\x00' => [57, 18, 0, 0]
    strbytes'美好'.encode('utf-8')'美好' => b'\xe7\xbe\x8e\xe5\xa5\xbd'
    strbytesbytes('美好', 'utf-8')'美好' => b'\xe7\xbe\x8e\xe5\xa5\xbd'
    bytesstrb'\xe7\xbe\x8e\xe5\xa5\xbd'.decode('utf-8')b'\xe7\xbe\x8e\xe5\xa5\xbd' => '美好'
    bytesbytes(无\x)binascii.b2a_hex(b'\xe7\xbe\x8eqaq')b'\xe7\xbe\x8eqaq' => b'e7be8e716171'
    bytesbytes(有\x)binascii.a2b_hex(b'e7be8e716171')b'e7be8e716171' => b'\xe7\xbe\x8eqaq'
    bytesstr(hex)b'\xe7\xbe\x8eqaq'.hex()b'\xe7\xbe\x8eqaq' => 'e7be8e716171'
    str(hex)bytesbytes.fromhex('e7be8e716171')'e7be8e716171' => b'\xe7\xbe\x8eqaq'

    总结

    • Python3 对字符串和二进制数据流做了明确的区分,不会以任意隐式的方式混用 strbytes
    • bytes 类型是一种比特流,它的存在形式是 01010001110 的形式,需要解码成字符才容易被人理解
    • struct 模块中的 pack()unpack() 可以实现任意类型和 bytes 之间的转换
    • binascii.b2a_hexbinascii.a2b_hex 可以实现16进制 bytes 的不同形式转换,不过转换前后长度发生了变化

    ==>> 反爬链接,请勿点击,原地爆炸,概不负责!<<==

    初识不知曲中意,再闻已是曲中人

    展开全文
  • (转)python之from_bytes、to_bytes

    千次阅读 2020-12-24 11:38:35
    原文:...首先我们来看两个__builtin__函数num1 = int.from_bytes(b...

    原文:https://blog.csdn.net/PYTandFA/article/details/78741339

    https://python3-cookbook.readthedocs.io/zh_CN/latest/c03/p05_pack_unpack_large_int_from_bytes.html

    首先我们来看两个__builtin__函数

    num1 = int.from_bytes(b'12', byteorder = 'big')

    num2 = int.from_bytes(b'12', byteorder = 'little')

    print('(%s,'%'num1', num1, '),', '(%s,'%'num2', num2, ')')

    result:(num1, 12594 ), (num2, 12849 )

    byt1 = (1024).to_bytes(2, byteorder = 'big')

    byt2 = (1024).to_bytes(10, byteorder = 'big')

    byt3 = (-1024).to_bytes(10, byteorder= 'big')

    lis1 = ['byt1', 'byt2', 'byt3', 'byt4']

    lis2 = [byt1, byt2, byt3, byt4]

    lis3 = zip(lis1, lis2)

    dic = dict(lis3)

    print(dic)

    result:

    byt1': b'\x04\x00'

    byt2': b'\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00'

    byt3': b'\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x00'

    byt4': b'\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x00'int.from_bytes()功能是将字节转化成int型数字'12'如果没有标明进制,看做ascii码值,'1' = 49 = 0011 0001, '2' = 50 = 0011 0010,如果byteorder = 'big', b'12' = 0010 0001 0010 0010 = 12594;如果byteorder = 'littlele', b'12' = 0011 0010 0011 0001 = 12849。第三个参数为signed表示有符号和无符号;(number).to_bytes()功能将整数转化成byte

    (1024).to_bytes(10, byteorder = 'big'),一个int型,4字节。1024 = 0000 0000 0000 0000 0000 0100 0000 0000,由于给定的是10,所以凑齐10个字节,高位用6个

    0000 0000占位,如果最后用16进制表示,1024 = b'\x00\x00\x00\x00\x00\x00\x00\x00x04\x00

    在看一个例子:

    byt3 = (-1024).to_bytes(10, byteorder= 'big', signed = 'true'),由于signed = 'true', -1024 = 1000 ...(11) 0000 0000 0000 0000 0000 0100 0000 0000,符号位为1,...省略了

    11个0000,由于负数由补码表示,所以先求-1024的反码,即符号位不变,其他位0变1,1变0,得:1111 ...(11) 1111 1111 1111 1111 1111 1011 1111 1111,对反码 + 1,得到补码:

    1111 ...(11) 1111 1111 1111 1111 1111 1100 0000 0000,用16进制表示:\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x00

    再举个例子:

    num3 = int.from_bytes(b'\xf3\x25', byteorder = 'little')

    f3 = 243(10进制)= 1111 0011,25 = 37(10进制)= 0010 0101,byteorder = 'little',字节的低位占主要作用, 得到:0010 0101 1111 0011,得到十进制:9715

    num3 = int.from_bytes(b'\xf3\x25', byteorder = 'big', signed = 'true')

    f3 = 243(10进制)= 1111 0011,25 = 37(10进制)= 0010 0101,byteorder = 'big',字节的高位占主要作用, 得到:1111 0011 0010 0101,signed = 'true',说明有符

    号,而且高位为1,所以用补码:1000 1100 1101 1011 即:-3291

    展开全文
  • bytes类型

    千次阅读 2020-11-09 10:38:34
    bytes类型是指一堆字节的集合,在python中以b开头的字符串都是bytes类型 b'\xe5\xb0\x8f\xe7\x8c\xbf\xe5\x9c\x88' #b开头的都代表是bytes类型,是以16进制来显示的,2个16进制代表一个字节。 utf-8是3个字节代表...

    定义

        bytes类型是指一堆字节的集合,在python中以b开头的字符串都是bytes类型

    b'\xe5\xb0\x8f\xe7\x8c\xbf\xe5\x9c\x88' #b开头的都代表是bytes类型,是以16进制来显示的,2个16进制代表一个字节。 utf-8是3个字节代表一个中文,所以以上正好是9个字节

    Bytes类型的作用

        计算机只能存储2进制, 我们的字符、图片、视频、音乐等想存到硬盘上,也必须以正确的方式编码成2进制后再存。

    对于文字,我们可以以gbk编码,也可以以utf-8、ASCII编码。
    
    对于图片,必须编码成PNG,JPEG等格式
    
    对于音乐,必须编码成MP3,WAV等

        在python中, 数据转成2进制后不是直接以0101010的形式表示的,而是用一种叫bytes(字节)的类型来表示,人类不可读。字符串转成bytes后长成这个样子

    >>> a = "朝阳"
    >>> a.encode("utf-8")  #以utf-8编码
    b'\xe6\x9c\x9d\xe9\x98\xb3' #b开头的都代表是bytes类型,是以16进制来显示的,2个16进制代表一个字节。 utf-8是3个字节代表一个中文,所以以上正好是6个字节

        在python中,字符串必须编码成bytes后才能存到硬盘上。在python3中文件存储的默认编码是utf-8.,当然你可以自行改变文件的默认编码

    f = open(file = "1.txt",encoding="gbk",mode="w")

    二进制模式操作文件

        当然,在打开文件时如果你不想让open这个对象帮你自动编码,你也可以直接往文件里存入bytes数据。

    >>> f = open(file = "1.txt",mode="wb") #wb以2进制模式打开文件
    >>> s = "自学自动化".encode("utf-8") #自行编码
    >>> print(s)
    b'\xe8\x87\xaa\xe5\xad\xa6\xe8\x87\xaa\xe5\x8a\xa8\xe5\x8c\x96'
    >>> f.write(s)
    15
    >>> f.close()
    

    二进制模式打开文件有

    wb 二进制创建
    
    rb 二进制读
    
    ab 二进制追加

    字符编码的转换

        编码转换是指将一种编码转成另外一种编码,比如 utf-8 to gbk。

        为何需要编码转换呢? 因为不同操作系统编码不同, utf-8在win上没办法直接看,因为windows是GBK编码的,得转成gbk。 反过来如果你的GBK字符相在Linux\Mac上正常显示,就得转成utf-8编码。

    编码&解码

    >>> a
    '朝阳'
    >>> a.encode("utf-8")
    b'\xe6\x9c\x9d\xe9\x98\xb3'
    >>> a_utf8=a.encode("utf-8")
    >>> a_utf8.decode("utf-8")
    '朝阳'
    

    在py3里,内存里的字符串是以unicode编码的,unicode的其中一个特性就是跟所有语言编码都有映射关系。所以你的utf-8格式的文件,在windows电脑上若是不能看,就可以把utf-8先解码成unicode,再由unicode编码成gbk就可以了。

    展开全文
  • python的Bytes类型

    千次阅读 2020-12-24 06:47:45
    python的Bytes类型一、总结一句话总结:在python中,数据转成2进制后不是直接以010101的形式表示的,而是用一种叫bytes(字节)的类型来表示的。 例如 b'\xe8\x87\xaa\xe51、python中,转化成bytes的方式?encode("utf...

    python的Bytes类型

    一、总结

    一句话总结:

    在python中,数据转成2进制后不是直接以010101的形式表示的,而是用一种叫bytes(字节)的类型来表示的。 例如 b'\xe8\x87\xaa\xe5

    1、python中,转化成bytes的方式?

    encode("utf-8"),解码的话就是decode("utf-8")

    #获取一个post请求

    importurllib.parse

    data= bytes(urllib.parse.urlencode({"hello":"world"}),encoding="utf-8")

    response= urllib.request.urlopen("http://httpbin.org/post",data=data)print(response.read().decode("utf-8"))

    二、python的Bytes类型

    转自或参考:Bytes类型 - Kwan、C - 博客园

    https://www.cnblogs.com/Kwan-C/p/11480678.html

    一、定义

    bytes类型是指一堆字节的集合,在python中以b开头的字符串都是bytes类型。

    b'\xe5\xb0\x8f\xe7\x8c\xbf\xe5\x9c\x88'

    '''

    b开头的都代表是bytes类型,是以16进制来显示的,2个16进制代表一个字节。

    utf-8是3个字节代表一个中文,所以以上正好是9个字节

    '

    展开全文
  • Python string转bytes

    千次阅读 2020-12-19 09:23:00
    Python string转bytes教程在Python string转bytes方法如果字符串内容都是 ASCII 字符,则可以通过直接在字符串之前添加字符 b 来构建字节串值。直接调用 bytes() 函数,将字符串按指定字符集转换成字节串,同时需要...
  • [2015-09-10 20:11:52,650] TRACE Bytes written as part of multisend call : 289874Total bytes written so far : 289874Expected bytes to write : 855391 (kafka.api.FetchResponseSend$$anon$2) [2015-09-10 ...
  • int与bytes的转换

    千次阅读 2020-12-06 08:53:16
    C语言编程,一个int一般就是4个byte,使用&符号获取int变量的地址,就可以得到各个byte。...bytes转换成intint对象中有一个class method,专门用来从bytes对象到int对象:>>> int.from_by...
  • PYTHON 之 bytes、str和int之间的一些转换

    万次阅读 多人点赞 2019-06-04 12:29:26
    1、bcd和string的相互转换 import binascii b = b'\x12\x34' s = binascii.b2a_hex(b).decode() #b'\x12\x34'->'1234' s = '1234' b = binascii.a2b_hex(s) ...2、bytes和int的相互转换 b = b...
  • Python中的bytes与bytearray详解

    万次阅读 多人点赞 2019-04-01 12:56:51
    bytes:不可变的字节序列 bytearray:可变的字节数组 字符与byts的区别: 字符串是字符组成的有序序列,字符可以使用编码来理解 bytes是字节组成的有序的不可变序列 bytearray是字节组成的有序的可变...
  • Python bytes 反斜杠转义问题解决方法

    千次阅读 2020-12-23 22:44:10
    Python bytes 反斜杠转义问题解决方法
  • Python bytes string相互转换过程解析

    千次阅读 2021-01-28 15:40:14
    一.bytes和string区别1.python bytes 也称字节序列,并非字符。取值范围 0 <= bytes <= 255,输出的时候最前面会有字符b修饰;string 是python中字符串类型;2.bytes主要是给在计算机看的,string主要是给人看...
  • Bytes类型

    千次阅读 2019-10-12 16:20:56
    Bytes类型: 1、定义 bytes类型是指一堆字节的集合, 在python中以b开头的字符串都是bytes类型。 以16进制显示, 两个16进制代表一个字节。 utf-8是3个16进制代表一个中文。 2、作用 计算机只认识二进制, 所以要...
  • Python3 bytes和bytearray

    千次阅读 2019-04-01 17:18:56
    bytes、bytearray Python3引入两个新类型: bytes:不可变类型 bytearrayy:字节数组,可变 一丶bytes 1.bytes定义方法 bytes()空bytes In [1]: bytes() Out[1]: b'' bytes(int)指定字节的bytes,被0填充 ...
  • 上一份代码先... /** ...public static byte[] int2bytes(byte[] srcBytes , int target){ byte[] bytes = new byte[srcBytes.length]; int start = 24; for(int i = 0 ; i&lt;srcBytes.l...
  • getBBytes和Bytes.toBytes的区别

    千次阅读 2019-08-15 16:44:57
    Bytes.toBytes底层使用了getBytes Bytes,toBytes是在转化成字节数组的时候,把它编码成utf-8的格式
  • (Python3)Bytes和Bytearray操作

    千次阅读 2019-05-01 15:32:03
    特别说明:以下所有的指定范围只能从0-255以内 1、count #计算子字符串(字符串表示的二进制数据)在规定范围内出现的次数 bytes.count(sub[, start[, end]]) ...bytes.decode(encoding="utf-8"...
  • 部署智能合约正常,使用时“bytes32[]”类型总是输不对。 1.1 空着不填 报错信息如下: transact to myHero.safeTransferFrom errored: Error encoding arguments: Error: invalid arrayify value (argument=...
  • Golang bytes.Buffer 用法精述

    千次阅读 2019-07-02 16:58:42
    bytes.Buffer 是 Golang 标准库中的缓冲区,具有读写方法和可变大小的字节存储功能。缓冲区的零值是一个待使用的空缓冲区。定义如下: type Buffer struct { buf []byte // contents are the bytes buf[off : len...
  • raise TypeError(“quote_from_bytes() expected bytes”) TypeError: quote_from_bytes() expected bytes 原因需要把字符串转成字节 即: def sign_data(self, data): data.pop("sign", None) # 排序后的字符串 ...
  • 将numpy array转换为bytes

    千次阅读 2020-07-08 16:42:09
    在使用numpy的tobytes(等价于tostring)方法发现得到的bytes数据并不等价于open(file,"rb")数据,需要对array数据进行相同的图片格式编码之后,再使用tobytes才行。 代码 import cv2 img_path = "img/test.jpg" #...
  • Solidity String与Bytes的转化

    千次阅读 2020-10-10 20:50:27
    pragma solidity ^0.4.0; contract BytesAndString{ // 0xe58898e5b885e6ada6 // 如果是固定大小字节数组转string,那么就需要先将字节数组转... function Bytes32ToString(bytes32 b32name) view returns(str
  • protobuffer中string和bytes类型

    千次阅读 2019-12-04 12:43:10
    从上一节protobuffer的介绍中我们知道字符串类型在protobuffer中有string和bytes两种类型,那这两种类型有什么区别呢,什么时候用string,什么时候用bytes。在C++中两种类型分别对应的是什么类型.下面将揭开迷雾 ...
  • Python中int与bytes相互转换的方法

    千次阅读 2021-03-17 01:35:48
    Python中int与bytes相互转换的方法发布时间:2020-12-15 09:30:37来源:亿速云阅读:87作者:小新小编给大家分享一下Python中int与bytes相互转换的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考...
  • Python bytes类型及用法

    千次阅读 2019-08-11 12:06:20
    Python 3 新增了bytes类型,用于代表字节串(这是本教程创造的一个词,用来和字符串对应)。字符串(str)由多个字符组成,以字符为单位进行操作;字节串(bytes)由多个字节组成,以字节为单位进行操作。 bytes 和 ...
  • GO语言之bytes.buffer

    千次阅读 2019-04-28 14:26:51
    bytes.Buffer bytes.Buffer是一个缓冲byte类型的缓冲器存放着都是byte。 Buffer 是 bytes 包中的一个type Buffer struct{…}。 A buffer is a variable-sized buffer of bytes with Read and Write methods. The...
  • bytes数据类型

    千次阅读 2019-02-26 19:21:23
    文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示。Python3不会以任意隐式的方式混用str和bytes,正是这使得两者的区分特别清晰。你不能拼接字符串和字节包,也无法在字节包里搜索字符串(反之亦然),也...
  • solidity中String和bytes家族

    千次阅读 2020-03-22 21:11:48
    solidity中String和bytes家族 solidity String的使用,以及bytes的使用
  • Python3中bytes类型转换为str类型

    千次阅读 2021-03-04 09:39:21
    文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示。Python 3不会以任意隐式的方式混用str和bytes,你不能拼接字符串和字节流,也无法在字节流里搜索字符串(反之亦然),也不能将字符串传入参数为字节流...
  • Bytes.toBytes()与getBytes()区别

    千次阅读 2020-03-25 11:43:57
    Bytes.toBytes()与getBytes()都用于将字符串转byte格式,区别如下 /** * Converts a string to a UTF-8 byte array. * @param s string * @return the byte array */ public static byte[] toBytes(String s) ...
  • python3 bytes拼接

    万次阅读 2019-08-28 14:29:52
    在python3中,bytes和str是不相同的两种类型 bytes bytes与str bytes与str bytes拼接 In [16]: b1 = bytes("hello", 'utf-8') In [17]: b1 Out[17]: b'hello' In [18]: b2 = bytes('world', 'utf-8') In [19]: b2...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,058,332
精华内容 423,332
关键字:

bytes

友情链接: X2.zip