Pythonを使用して非常に長いバイナリ文字列を元に戻せる単純なフォームにエンコードする最良の方法は?

1
leveygao 2021-01-14 01:00.

- - - - - - - - - - - - - 新しく追加する - - - - - - - - - - - -------

ここに詳細を記入させてください:

実際の状況では、環境Aにこの長い文字列があり、それをコピーして環境Bに貼り付ける必要があります。

残念ながら、envir-Aとenvir-Bは接続されていない(相互アクセスがない)ので、それを表すためにエンコード/デコードする方法を考えています。そうしないと、より多くのファイルを手動で入力する必要があります--- -これは遅く、再現性がありません。

何か提案やガジェットがお勧めしますか?どうもありがとう!


SUPERLONGバイナリを数桁のような単純な形式にエンコードするという奇妙な問題に直面しています。

たとえば、長さが1,000〜100,000桁以上の「110 ... 011」のように、1と0だけで構成される長い文字列があり、このSTRINGを桁/文字の少ないものにエンコードしたいとします。次に、元の文字列に戻す必要があります。

現在、Pythonでhex / intメソッドを使用して、この文字列を「圧縮」し、「解凍」して元の形式に戻そうとしています。

例は次のとおりです。

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')

'' '

しかし、これには問題があります。約500桁のString:101010 ... 0001(500d)を試しました。最良の「圧縮」結果は、16進数で約127桁です。

それで、文字列をさらに少ない桁数に「圧縮」するためのより良い方法はありますか?

** 5,000桁の文字列が1と0で構成されているとすると、50/100桁/文字(さらに低い)に圧縮します** ??

4 answers

1
Som-1 2021-01-14 02:19.

単純にしたい場合は、1つの16進文字で4つの2進文字(2 ^ 4 = 16)を圧縮するとします。必要な圧縮率は約100/50倍です。50回の場合、50個のバイナリ文字を1文字に圧縮する必要があります。つまり、任意の組み合わせをエンコードするには2 ^ 50個の異なる文字が必要です。かなりたくさんあります。

より低い比率を受け入れる場合は、ここで説明するようにbase64を試すことができます。その圧縮率は6対1です。

それ以外の場合は、文字列をブロックに分割する、ブロック間で類似するものを探す、異なるシンボルでエンコードする、それらのシンボルのマップを作成するなど、複雑なアルゴリズムを考え出す必要があります。

おそらく、アーカイバを使用して文字列を圧縮してから、結果のbase64表現を返す方が簡単です。

タスクで許可されている場合は、文字列全体をどこかに保存して短い一意の名前を付けることができるため、圧縮と解凍の代わりに、文字列を名前で保存および取得する必要があります。

1
Mark Ransom 2021-01-14 08:52.

これはおそらくあなたが得ることができる絶対に最短の文字列を生成しませんが、Pythonに組み込まれた機能を使用することは簡単です。文字をバイナリ形式に変換する必要はありません。zlib圧縮により、2つの異なる文字のみを含む入力が最適なものに変換されます。

エンコーディング:

import zlib
import base64
result = base64.b64encode(zlib.compress(input_str.encode()))
1
TTho Einthausend 2021-01-14 11:08.

カウントした場合0とは、1あなたが使用できるよりも有意差がある数え上げ最短表現を取得するためにコーディング

0
Mark Adler 2021-01-14 08:32.

文字列がと数字のみで構成されている場合は、8桁を1バイトにパックできます。また、最後のバイトは8桁未満を表す場合があるため、最後の8の倍数を超えた桁数を追跡する必要があります。01

Related questions

MORE COOL STUFF

ケイト・ブランシェットは3日間一緒に夫と一緒に寝て、25年経ってもまだ夫と結婚しています

ケイト・ブランシェットは3日間一緒に夫と一緒に寝て、25年経ってもまだ夫と結婚しています

ケイト・ブランシェットは、夫に会ったとき、典型的な交際のアドバイスに逆らいました。

マイケルシーンが非営利の俳優である理由

マイケルシーンが非営利の俳優である理由

マイケルシーンは非営利の俳優ですが、それは正確にはどういう意味ですか?

ホールマークスターのコリンエッグレスフィールドがRomaDramaLiveでスリル満点のファンと出会う![エクスクルーシブ]

ホールマークスターのコリンエッグレスフィールドがRomaDramaLiveでスリル満点のファンと出会う![エクスクルーシブ]

特徴的なスターのコリン・エッグレスフィールドは、RomaDrama Liveでのスリル満点のファンとの出会いについて料理しました!加えて、大会での彼のINSPIREプログラム。

「たどりつけば」をオンラインでストリーミングできない理由

「たどりつけば」をオンラインでストリーミングできない理由

ノーザンエクスポージャーが90年代の最も人気のある番組の1つになった理由を確認するには、Blu-rayまたはDVDプレーヤーをほこりで払う必要があります。

Where in the World Are You? Take our GeoGuesser Quiz

Where in the World Are You? Take our GeoGuesser Quiz

The world is a huge place, yet some GeoGuessr players know locations in mere seconds. Are you one of GeoGuessr's gifted elite? Take our quiz to find out!

バイオニック読書はあなたをより速く読むことができますか?

バイオニック読書はあなたをより速く読むことができますか?

BionicReadingアプリの人気が爆発的に高まっています。しかし、それは本当にあなたを速読術にすることができますか?

ドミニカのボイリング湖:アクセスは簡単ではありませんが、ハイキングする価値があります

ドミニカのボイリング湖:アクセスは簡単ではありませんが、ハイキングする価値があります

ドミニカのボイリング湖は、世界で2番目に大きいボイリング湖です。そこにたどり着くまでのトレッキングは大変で長いですが、努力する価値は十分にあります。

私たちの水をきれいに保つのを助けるためにあなたの髪を寄付してください

私たちの水をきれいに保つのを助けるためにあなたの髪を寄付してください

サロンからのヘアトリミングや個人的な寄付は、油流出を吸収して環境を保護するのに役立つマットとして再利用できます。

3年ぶりにエクアドルで捕まったマーク・ザッカーバーグを振り下ろそうとした男

3年ぶりにエクアドルで捕まったマーク・ザッカーバーグを振り下ろそうとした男

マーク・ザッカーバーグは2018年4月に議会で証言しました。数年前、ポール・セグリアという男がFacebookのCEOであるマーク・ザッカーバーグに対して数百万ドルの訴訟を起こしました。 -サイトの所有権。

スキンのファンエリアへの乱闘流出-ジェット共同練習

スキンのファンエリアへの乱闘流出-ジェット共同練習

ジェッツとスキンズは、日曜日の午後、ワシントンのリッチモンドトレーニングキャンプでの合同練習に参加しました。たまたま、2つのチームの間で事態が熱くなり、いくつかの小競り合いが発生し、最終的には大騒ぎになりました。ワシントンの攻撃的なプレーが終了した後、プレーヤーはお互いに叫んでいたようです。ワシントンの後半のヒットはモーガンモーゼスに取り組みます。

エドワードノートンのスモーキーでスターがちりばめられたジョナサンレセムのマザーレスブルックリンの適応の予告編を見る

エドワードノートンのスモーキーでスターがちりばめられたジョナサンレセムのマザーレスブルックリンの適応の予告編を見る

エドワードノートンは、ジョナサンレセムのジョイシアン1999年の小説マザーレスブルックリンが出版されて以来、スクリーンに登場させたいと考えていました。20年後の今、ハードボイルドストーリーの予告編が到着しました。これは、レセムのストーリーを1950年代に戻し、多くの見慣れた顔を牽引します。

偶発的なキティ猫フィルターはパキスタンの大臣の深刻なライブストリームを弱体化させます

偶発的なキティ猫フィルターはパキスタンの大臣の深刻なライブストリームを弱体化させます

事件の芸術的な再現。いいえ、ShaukatYousafzaiは毛皮ではありません。

Plathville の Kim と Olivia Plath が数年ぶりに言葉を交わすことへようこそ

Plathville の Kim と Olivia Plath が数年ぶりに言葉を交わすことへようこそ

イーサン プラスの誕生日のお祝いは、TLC のウェルカム トゥ プラスビルのシーズン 4 のフィナーレで、戦争中の母親のキム プラスと妻のオリビア プラスを結びつけました。

Nicky Hilton Forced to Borrow Paris' 'I Love Paris' Sweatshirt After 'Airline Loses All [My] Luggage'

Nicky Hilton Forced to Borrow Paris' 'I Love Paris' Sweatshirt After 'Airline Loses All [My] Luggage'

Nicky Hilton Rothschild's luggage got lost, but luckily she has an incredible closet to shop: Sister Paris Hilton's!

ケイト・ミドルトンはロンドンの水辺で一日を過ごし、さらにジェニファー・ロペス、ジュリアン・ハフなど

ケイト・ミドルトンはロンドンの水辺で一日を過ごし、さらにジェニファー・ロペス、ジュリアン・ハフなど

ケイト・ミドルトンはロンドンの水辺で 1 日を過ごし、ジェニファー・ロペス、ジュリアン・ハフなども。ハリウッドからニューヨークまで、そしてその間のあらゆる場所で、お気に入りのスターの活躍をご覧ください!

ウィスコンシン川でのナイフ攻撃で 17 歳の少年が刺されて死亡、他の 4 人が負傷したままになっている

ウィスコンシン川でのナイフ攻撃で 17 歳の少年が刺されて死亡、他の 4 人が負傷したままになっている

捜査官は、グループと容疑者が攻撃の前にお互いを知っていたかどうかを調べています

実際に変換するコンテンツ戦略を作成することを想像してみてください。それが可能だ。

実際に変換するコンテンツ戦略を作成することを想像してみてください。それが可能だ。

2021 年には、サービスを提供する顧客と顧客に伝えるストーリーについて知っていることをすべて再考することをお勧めします。あとずさりする。

マンモスロスは私の心を愛に開いた

マンモスロスは私の心を愛に開いた

フェリックス ザ キャットの 9 歳の誕生日の日に、大人になってからの最大の損失の 1 つである 2013 年のソフィーを思い出します。私はこのエッセイを書き、2013 年にこのプラットフォームで簡単に共有しました。

あなたがインターネットがあなたに望んでいる人になれないとき

あなたがインターネットがあなたに望んでいる人になれないとき

私は「列車事故」という言葉が嫌いです。人々は自分自身の道徳的羅針盤に安らぎを覚え、そうすることで自分自身が判断を下していることに気づきます。

DFINITY ブロックチェーンの分散型クラウド ビジョン

編集者注: アーカイブ目的で保存されている DFINITY ブログの古い資料を表示しています。

DFINITY ブロックチェーンの分散型クラウド ビジョン

この投稿では、DFINITY チームの分散型クラウドのビジョンと、それが従来のブロックチェーンやアマゾン ウェブ サービスなどの既存のクラウド プロバイダーとどのように関連しているかを探ります。大規模なネットワークによって適用される DFINITY テクノロジのデモンストレーションが 2017 年の秋に行われ、その後、非営利財団を支援するための主要な資金調達が行われ、「オープン クラウド」ネットワークは 2018 年の初夏に開始される予定です。 .

Language