当前位置: 首页 > 知识库问答 >
问题:

使用Python将一个很长的二进制字符串编码成一个可恢复的简单形式的最佳方法?

卫高明
2023-03-14

---------------------------------------------------------------------------------------------

实际情况是,我在environment-A中有这个长字符串,我需要将它复制粘贴到Environment-B中;

不幸的是,envir-A和envir-B没有连接(没有相互访问),所以我正在考虑一种编码/解码的方法来表示它,否则对于更多的文件,我必须手工输入字符串----这很慢,而且不可复制。

有什么建议或小工具推荐吗?多谢!

一个例子是:

1.输入字符串:'110011110110011'

'''

def Bi_to_Hex_Int(input_str, method ):

#2to16 
if method=='hex':
    string= str(input_str)
    input_two= string
    result=    hex(int(input_two,2))
    
#2to10 
if method=='int':
    string= str(input_str)
    input_two= string
    result=     int(input_two,2) 


print("input_bi length",len(str(input_two)), "\n output hex length",len(str(result)),'\n method: {}'.format(method) )
return result


res_16 =Bi_to_Hex_Int(gene , 'hex')
=='0x67b3'

res_10 =Bi_to_Hex_Int(gene , 'int')
== 26547
def HexInt_to_bi(input_str , method):


if method =='hex':

    back_two =  bin(int(input_str,16))

    back_two =  back_two[2:]
    
     
if method =='int':

    back_two =  bin( int(input_str ))

    back_two =  back_two[2:]
    
    
print("input_hex length",len(str(input_str)), "\n output bi length",len(str(back_two)) )
return back_two


hexback_two = HexInt_to_bi(res_16, 'hex')
intback_two = HexInt_to_bi(res_10 , 'int')

**假设5000位字符串由1s和0s组成,压缩到50/100位/字符(甚至更低)**??

共有1个答案

胡星汉
2023-03-14

这可能不会产生您所能获得的绝对最短的字符串,但使用Python内置的工具非常容易。无需将字符转换为二进制格式,zlib压缩将只包含两个不同字符的输入转换为最佳格式。

编码:

import zlib
import base64
result = base64.b64encode(zlib.compress(input_str.encode()))
 类似资料:
  • 本文向大家介绍Python简单实现查找一个字符串中最长不重复子串的方法,包括了Python简单实现查找一个字符串中最长不重复子串的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python简单实现查找一个字符串中最长不重复子串的方法。分享给大家供大家参考,具体如下: 刚结束的一个笔试题,很简单,不多说简单贴一下具体的实现: 结果如下: 120135435最长非重复子串为:201354

  • 问题内容: 给定一个字符c和一个数字n,我如何创建一个包含n个重复c的字符串?手动执行此操作太麻烦了: 当然,已经有一些静态库函数为我完成了这项工作? 问题答案:

  • 问题内容: 在Java中获取字符串的最后一个单词的最简单方法是什么?您可以假设没有标点符号(仅字母字符和空格)。 问题答案:

  • 本文向大家介绍Java字符串转成二进制码的方法,包括了Java字符串转成二进制码的方法的使用技巧和注意事项,需要的朋友参考一下 Java将字符串转成二进制码,具体内容如下 输出结果为:111001110001011 1001011011101010 Java将二进制码转成字符串 根据Unicode码表,将二进制码转换成字符 1、先将二进制转换成十六进制 111001110001011   -->0

  • 我有一个二进制数,表示为11.1111111(与小数点类似)。点前有2位,点后有1024位。这是一个将e计算到高精度的练习,但现在我被困在如何将其转换为十进制的问题上。万一你们想知道号码,就在这里: 如何将其转换为2.718。。。。(小数点后应该有309位左右)我不能简单地将每一位乘以2^x,因为一段时间后,数字2^x将=0,即使使用双精度浮点。我使用的是Visual Basic,所以我不确定是否

  • 问题内容: 我需要替换一些字符,如下所示:,… 我编码如下,但是我想应该有一些更好的方法。有什么提示吗? 问题答案: 替换两个字符 我给当前答案中的所有方法加上了一个额外的时间。 使用输入字符串并替换和,最快的方法是将替换链接在一起,如下所示:。 每个功能的时间: a)1000000次循环,每个循环最好为3:1.47 s b)1000000个循环,每个循环的最佳时间为3:1.51μs c)1000