精华内容
下载资源
问答
  • 将字符串转换为二进制

    千次阅读 2021-02-11 23:50:16
    在我遇到的问题是它似乎只第一个字符转换为二进制,而不是字符串的所有字符。例如,如果你输入“hello”,它把h转换二进制,而不是整个过程。在以下是我目前所掌握的情况def convertFile():myList = []myList2...

    我需要一些帮助把字符串转换成二进制。我必须使用我自己的代码,而不是内置函数(除了我可以使用'ord'将字符转换成十进制)。在

    我遇到的问题是它似乎只将第一个字符转换为二进制,而不是字符串的所有字符。例如,如果你输入“hello”,它将把h转换成二进制,而不是整个过程。在

    以下是我目前所掌握的情况def convertFile():

    myList = []

    myList2 = []

    flag = True

    string = input("input a string: ")

    for x in string:

    x = ord(x)

    myList.append(x)

    print(myList)

    for i in range(len(myList)):

    for x in myList:

    print(x)

    quotient = x / 2

    quotient = int(quotient)

    print(quotient)

    remainder = x % 2

    remainder = int(remainder)

    print(remainder)

    myList2.append(remainder)

    print(myList2)

    if int(quotient) < 1:

    pass

    else:

    x = quotient

    myList2.reverse()

    print ("" .join(map(str, myList2)))

    convertFile()

    展开全文
  • 刚学习PYQT,这里需要用Python进行数据 通信,有几个常用功能。我们的上位机软件里的变量往往都是整型、浮点...struct.pack用于将Python的值根据格式符,转换为字符串(因为Python中没有字节(Byte)类型。 可以把这里的

    刚学习PYQT,这里需要用Python进行数据 通信,有几个常用功能。我们的上位机软件里的变量往往都是整型、浮点型、字符串等等,但是我们在数据传输的过程中,往往需要的是ByteArray格式。
    这里有两组非常重要的方法:struct.pack()和struct.unpack,以及encode()和decode();

    下面逐一进行讲解:

    struct.pack个人感觉常用于数值型。
    struct.pack用于将Python的值根据格式符,转换为字符串(因为Python中没有字节(Byte)类型。
    可以把这里的字符串理解为字节流,或字节数组。
    其函数原型为:struct.pack(fmt, v1, v2, …),
    参数fmt是格式字符串,关于格式字符串的相关信息在下面有所介绍。
    v1, v2, …表示要转换的python值。下面的例子将两个整数转换为字符串(字节流):

    import struct   
      
    a = 20  
    b = 400  
      
    str = struct.pack("ii", a, b)  #转换后的str虽然是字符串类型,但相当于其他语言中的字节流(字节数组),可以在网络上传输   
    print 'length:', len(str)   
    print str   
    print repr(str)  
    
    #---- result   
    #length: 8   
    # 乱码
    #'/x14/x00/x00/x00/x90/x01/x00/x00'  
    

    格式符"i"表示转换为int,'ii’表示有两个int变量。进行转换后的结果长度为8个字节(int类型占用4个字节,两个int为8个字节),可以看到输出的结果是乱码。因为结果是二进制数据,所以显示为乱码。可以使用python的内置函数repr来获取可识别的字符串,其中十六进制的0x00000014, 0x00001009分别表示20和400。用的小端法。

    struct.unpack
    struct.unpack做的工作刚好与struct.pack相反,用于将字节流转换成python数据类型。它的函数原型为:struct.unpack(fmt, string),该函数返回一个元组。 下面是一个简单的例子:

    str = struct.pack("ii", 20, 400)   
    a1, a2 = struct.unpack("ii", str)   
    print 'a1:', a1   
    print 'a2:', a2   
      
    #---- result:   
    #a1: 20   
    #a2: 400  
    

    encode()函数个人感觉常用语字符串型。
    Python3严格区分文本(str)和二进制数据(Bytes),文本总是Unicode,用str类型,二进制数据则用Bytes类型表示,这样严格的限制也让我们对如何使用它们有了清晰的认识。
    在这里插入图片描述
    描述:以指定的编码格式编码字符串,默认编码为 ‘utf-8’。

    语法:str.encode(encoding=‘utf-8’, errors=‘strict’) -> bytes (获得bytes类型对象)

    encoding 参数可选,即要使用的编码,默认编码为 ‘utf-8’。字符串编码常用类型有:utf-8,gb2312,cp936,gbk等。
    errors 参数可选,设置不同错误的处理方案。默认为 ‘strict’,意为编码错误引起一个UnicodeEncodeError。 其它可能值有 ‘ignore’, ‘replace’, 'xmlcharrefreplace’以及通过 codecs.register_error() 注册其它的值。

    str1 = "我爱祖国"
    str2 = "I love my country"
    print("utf8编码:",str1.encode(encoding="utf8",errors="strict")) #等价于print("utf8编码:",str1.encode("utf8"))
    print("utf8编码:",str2.encode(encoding="utf8",errors="strict"))
    print("gb2312编码:",str1.encode(encoding="gb2312",errors="strict"))#以gb2312编码格式对str1进行编码,获得bytes类型对象的str
    print("gb2312编码:",str2.encode(encoding="gb2312",errors="strict"))
    print("cp936编码:",str1.encode(encoding="cp936",errors="strict"))
    print("cp936编码:",str2.encode(encoding="cp936",errors="strict"))
    print("gbk编码:",str1.encode(encoding="gbk",errors="strict"))
    print("gbk编码:",str2.encode(encoding="gbk",errors="strict"))
    
    utf8编码: b'\xe6\x88\x91\xe7\x88\xb1\xe7\xa5\x96\xe5\x9b\xbd'
    utf8编码: b'I love my country'
    gb2312编码: b'\xce\xd2\xb0\xae\xd7\xe6\xb9\xfa'
    gb2312编码: b'I love my country'
    cp936编码: b'\xce\xd2\xb0\xae\xd7\xe6\xb9\xfa'
    cp936编码: b'I love my country'
    gbk编码: b'\xce\xd2\xb0\xae\xd7\xe6\xb9\xfa'
    gbk编码: b'I love my country'
    
    a = '编码测试'
     
    #使用不同的编码格式给a进行编码
    b = a.encode('utf-8')
    c = a.encode('gb2312') #发现gb2312和gbk结果一样
    d = a.encode('gbk')
    print(type(b),b)
    print(type(c),c)
    print(type(d),d)
    '''
    <class 'bytes'> b'\xe7\xbc\x96\xe7\xa0\x81\xe6\xb5\x8b\xe8\xaf\x95'
    <class 'bytes'> b'\xb1\xe0\xc2\xeb\xb2\xe2\xca\xd4'
    <class 'bytes'> b'\xb1\xe0\xc2\xeb\xb2\xe2\xca\xd4'
    '''
    #使用不同的解码方式解码
    b1 = b.decode('utf-8')
    c1 = c.decode('gb2312')
    d1 = d.decode("gbk")
    b11 = b.decode('gbk')  #b本来是用utf-8编码,现在用gbk进行解码,出现乱码的情况
    print(type(b1),b1)
    print(type(c1),c1)
    print(type(d1),d1)
    print(type(b11),b11)  #b本来是用utf-8编码,现在用gbk进行解码,出现乱码的情况
    '''
    <class 'str'> 编码测试
    <class 'str'> 编码测试
    <class 'str'> 编码测试
    <class 'str'> 缂栫爜娴嬭瘯
    '''
    
    展开全文
  • 解决方案 In python 2.7 strings represent raw bytes (this changes in python 3) You simply need to save the data to a binary type file: with open('file.jpg', 'wb') as handle: handle.write(data_string) ...

    I'm using PyOBEX to exchange binary files (e.g. images etc.) between my computer (Windows 7) and my phone (Android). However, when I use get() to get a file from my phone, it arrives on my computer as a str. I tried using the chardet module to find out what encoding to use to decode it and eventually turn it into a binary file, but it returned None. type() says that it's a str.

    The code is the following:

    import bluetooth

    import BTDeviceFinder

    import PyOBEX.client

    name = "myDevice"

    address = BTDeviceFinder.find_by_name(name)

    port = BTDeviceFinder.find_port(address)

    client = PyOBEX.client.BrowserClient(address, port)

    client.connect()

    a, b = client.get("pic.jpg")

    where a is the header (that comes with a file sent via OBEX) and b is the actual file object. b looks something like this: https://drive.google.com/file/d/0By0ywTLTjb3LaFJaM2hWVEdBakE/view?usp=sharing

    The PyOBEX documentation or Python forums say nothing about what encoding is used with get().

    Do you know how to turn this string into binary data that can be used with write() and then saved in the original file format (i.e. .jpg)?

    解决方案

    In python 2.7 strings represent raw bytes (this changes in python 3)

    You simply need to save the data to a binary type file:

    with open('file.jpg', 'wb') as handle:

    handle.write(data_string)

    Here is a link to the python doc on open:

    Note that the "b" represents binary.

    Again, this is assuming Python 2.7

    展开全文
  • 如何在Python中将二进制字符串转换为相应的十六进制值?我有0000 0100 1000 1101,我想使用Python 2.6获得048D。参考方案int以2底,然后是hex:>>> int('010110', 2)22>>> hex(int('010110', 2))...

    如何在Python中将二进制字符串转换为相应的十六进制值?

    我有0000 0100 1000 1101,我想使用Python 2.6获得048D。

    参考方案

    int以2为底,然后是hex:

    >>> int('010110', 2)

    22

    >>> hex(int('010110', 2))

    '0x16'

    >>>

    >>> hex(int('0000010010001101', 2))

    '0x48d'

    int的文档:

    int(x[, base]) -> integer

    Convert a string or number to an integer, if possible. A floating

    参数将被截断为零(不包含字符串)

    表示浮点数!)转换字符串时,

    可选的基础。转换基数时提供基数是错误的

    非字符串。如果base为零,则根据

    字符串内容。如果参数超出整数范围,则a

    将返回long对象。

    hex的文档:

    hex(number) -> string

    Return the hexadecimal representation of an integer or long

    整数。

    Python 3运算符>>打印到文件 - python

    我有以下Python代码编写项目的依赖文件。它可以在Python 2.x上正常工作,但是在使用Python 3进行测试时会报告错误。depend = None if

    展开全文
  • 展开全部直接上代码:e5a48de588b662616964757a686964616f31333335313738#coding=gbkdefintTo2Str(X,K):"""intTo2Str(X,K)整数X转化为K位2进制字符串"""try:X=long(X)except:X=0try:K=int(K)except:K=0ifK<...
  • 一个十六进制字符串解码成一个字节字符串或者一个字节字符串编码成一个十六进制字符串 1)只是简单的解码或编码一个十六进制的原始字符串,可以使用 binascii模块 >>> s = b'hello' >>> # ...
  • 我们在Python中会遇到很多转换的问题,例如需要字符串,而输入内容为二进制。码的是字符串,却要是字符串字符串二进制如何相互转换呢?本文向大家介绍Python字符串二进制相互转换的两种方法,一个是简单版本...
  • python3字符串二进制互相转换

    千次阅读 2021-01-29 07:09:32
    程序员的一天人闲太久,努力一下就以为是在拼命。一、前言python中,没有"0-1"形式的二进制类型,但我们依然可以存储...二、代码"""二进制字符串转换"""def str_2_bin(str):"""字符串转换为二进制"""return '...
  • 首先,pack中格式化字符串的值应该bytes类型,而python3中所有的文本格式都是Unicode,也就是说python3中需要做一下类型转换 import struct def configPartitionMaker(binPath): with open(binPath, 'w+b') as f:...
  • 二进制数是以 0b或者 0B开头,并且所有字符只能包含 0和 1 比如 0101 是二进制数 八进制 八进制数以 0O或 0开头,并由0~7组成 比如 0266(八进制数) 十进制数 十进制数第一位不是0,除表示正负符号外,要以1-9...
  • import structwith open("foo.bin", 'wb') as f:f.write(struct.pack('h', 0b0010010110101))采用2个字节(16位)...在编辑根据你的评论,以下是一些背景:在文件中写入内容时,总是转换为二进制文件。字符是用...
  • 1、字符串转换: >>> x='123abc' >>> b=bin(int(x,16))[2:] >>> print(b) 100100011101010111100 2、可以看到字符串开头少了很多0,如果想要补充这些0: >>> x='123abc' &...
  • 我在如何huffman编码字符串转换为二进制python时遇到了问题。在这个问题不涉及哈夫曼算法。在是这样的:我可以得到一个编码的huffman字符串,比如01010101010。注意,它是一个字符串。在但是现在我想把字符串表示...
  • json转义后才能赋值给变量 源代码: def encode(s): return ' '.join([bin(ord(c)).replace('0b', '') for c in s]) def decode(s): return ''.join([chr(i) for i in [int(b, 2) for b in.
  • 具体分析如下:php中可以通过bin2hex函数将字符串转换成16进制的形式输出,bin2hex()函数返回结果ascii码$string = "Hello\tworld!\n";print($string."\n");print(bin2hex($string)."\n");?>输出...
  • 已知一个二进制串(UTF-8编码格式)列表(每一项一字节8bit):b=['01010000', '01111001', '01110100', '01101000', '01101111', '01101110', '11100101', '10100100', '10100111', '...#即字符串"Python大法"如何其...
  • 要把字符串表示的二进制转换为ascii值,首先把他转换为十进制数,再用python的内置函数的**chr()**函数转换为ascii值。因为ascii是按照7位或者8位bit来表示,所以我们要先将二进制数处理成8bit一组。 如果...
  • int()可以将字符串或浮点数转换成整数,也可以用于进制转换float()可以将字符串或整数转换成浮点数 实际上它们表示根据给定参数在内存中构造一个整数、浮点数对象,所以可以用来作为类型转换工具。而且,前面已经...
  • python - 十六进制转换为二进制

    千次阅读 2021-01-29 14:20:28
    python - 十六进制转换为二进制我有ABC123EFFF。我想拥有001010101111000001001000111110111111111111(即二进制代表,例如42位数和前导零)。怎么样?18个解决方案92 votes为了解决左侧尾随零问题:my_hexdata = ...
  • 本文实例讲述了Python实现的十进制小数与二进制小数相互转换功能。分享给大家供大家参考,具体如下:十进制小数 ⇒ 二进制小数乘2取整对十进制小数乘2得到的整数部分和小数部分,整数部分即是相应的二进制数码,再用...
  • How could I do that in Python? is there a standard way to do this? Now in this forum there are some posts (1,2,3, 4 ) on this but none of them answer properly to my question. 解决方案 See ...
  • Python字符进制转换

    2020-12-21 12:48:26
    Python字符与进制转换0b / 0B --> 二进制字符前缀0o / 0O --> 八进制字符前缀0x / 0X --> 十六进制字符前缀ascii(object)就像函数 repr(),返回一个对象可打印的字符串,但是 repr() 返回的字符串中非 ...
  • and so on What's the correct way to do this in Python 3? 解决方案 Here's an example of doing it the first way that Patrick mentioned: convert the bitstring to an int and take 8 bits at a time. The ...
  • 一个小问题今天在做一个实验时,需要对一个包含中...在对每行进一步进行处理时,要求处理对象必须通用字符串,所以: lineVec = str(line).strip().split('\t')此时的lineVec的元素类型string,但输出是仍然是 ...
  • 1、python二进制表示: python中用 0b 的前缀表示二进制,0o 表示八进制,0x 表示十六进制。 #二进制# >>> 0b10 2 >>> 0b11 3 >>> 0b1101 13 #八进制# >>> 0o10 8 >>&...
  • 输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后转换为进制数后输出。如果在第一个十六进制字符之前存在字符“-”,则代表该数是负数...
  • python中二进制转换字符串

    千次阅读 2021-01-30 18:02:14
    python中二进制转换字符串 一、参照链接:https://www.cnblogs.com/cansun/p/8025547.html python本身默认编码unicode #所有编码转换时都需通过unicode msg = “北京” print(msg.encode(encoding = “utf-8”))...
  • 我已4个字符atcg转换为二进制格式,即00 replacing A11 replacing T10 replacing C01 replacing G所以一个字符串AGAGAGAGTGATAGA号转换后会像001000100010001011100011001000一旦我得到这个值,我就把这个二进制...
  • 将二进制字符串转为整数 num = "10011" print(int(num, 2)) 输出 19 整数转为二进制字符串 number = 19 print("{:b}".format(number)) 输出 10011

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 98,919
精华内容 39,567
关键字:

python将字符串转化为二进制

python 订阅