(57)【要約】  本出願は、バイナリデータをエンコードする方法を提供しており、方法は、ｋバイトの長さを有するバイナリデータを取得するステップであって、ｋは、自然数である、ステップと、既定のエンコードアルゴリズムを使用してｋバイトのバイナリデータを（ｋ＋ｔ）バイトの７ビットエンコード済みのデータに変換するステップであって、ｔは、ｋ／７以上である最小の整数である、ステップと、を有する。本出願における技術的解決策は、Ｂａｓｅ６４エンコード済みのファイルのもの未満である長さを有するエンコード済みのファイルを生成することが可能であり、これにより、ネットワーク送信において必要とされるデータトラフィックが少なく、従って、厳格な要件を有するアプリケーションシナリオに適している。【選択図】図１
2019537332.tif 000002
【特許請求の範囲】
【請求項１】
バイナリデータをエンコードする方法であって、
ｋバイトの長さを有するバイナリデータを取得するステップであって、ｋは、自然数である、ステップと、
既定のエンコードアルゴリズムを使用することにより、前記ｋバイトのバイナリデータを（ｋ＋ｔ）バイトの７ビットエンコード済みのデータに変換するステップであって、ｔは、７によって除算されたｋ以上である最小の整数である、ステップと、
を有する方法。
【請求項２】
前記既定のエンコードアルゴリズムは、前記ｋバイトのバイナリデータのそれぞれのバイトの既定のビットを抽出し、且つ、設定されたビット順序に従って、前記既定のビットをｔバイトの７ビットエンコード済みの組み合わせられたビットデータに組み合わせるステップと、前記ｋバイトのバイナリデータのそれぞれのバイトの残りの７ビットをｋバイトの７ビットエンコード済みの残余ビットデータとして使用するステップと、前記バイナリデータの７ビットエンコード済みのデータを生成するべく、設定されたバイト順序に従って、前記ｋバイトの７ビットエンコード済みの残余ビットデータ及び前記ｔバイトの７ビットエンコード済みの組み合わせられたビットデータを配置するステップと、を有する請求項１に記載の方法。
【請求項３】
前記設定されたバイト順序は、前記対応するバイナリデータに従って配置された、前記ｔバイトの組み合わせられたビットデータの前又は後の前記ｋバイトの残余ビットデータを有する請求項２に記載の方法。
【請求項４】
前記設定されたビット順序は、前記バイナリデータのｓ連続バイトから抽出された前記既定のビットを前記組み合わせられたビットデータの１バイトのビット０〜ビット（ｓ−１）又はビット（ｓ−１）〜ビット０として使用するステップを有しており、ｓは、７超ではない自然数である請求項２に記載の方法。
【請求項５】
前記既定のビットは、それぞれのバイトの最上位ビットである請求項２に記載の方法。
【請求項６】
バイナリデータをデコードする方法であって、
ｐバイトの長さを有するデコード対象の７ビットエンコード済みのデータを取得するステップであって、ｐは、１超の自然数である、ステップと、
既定のデコードアルゴリズムを使用することにより、前記ｐバイトの７ビットエンコード済みのデータを（ｐ−ｔ）バイトのバイナリデータに変換するステップであって、ｔは、８によって除算されたｐ以上である最小の整数である、ステップと、
を有する方法。
【請求項７】
前記既定のデコードアルゴリズムは、設定されたバイト順序に従って、ｋバイトの残余ビットデータ及びｔバイトの組み合わせられたビットデータを前記ｐバイトの７ビットエンコード済みのデータから取得するステップであって、ｋは、ｐからｔを減算することによって取得された差である、ステップと、ｋビットを前記ｔバイトの７ビットエンコード済みの組み合わせられたビットデータから抽出するステップと、前記抽出されたビットのそれぞれを前記ビットの設定されたビット順序に対応する前記ｋバイトの残余ビットデータの既定のビットに挿入し、これにより、ｋバイトのバイナリデータを取得するステップと、を有する請求項６に記載の方法。
【請求項８】
前記設定されたバイト順序は、前記対応するバイナリデータに従って配置された、前記ｔバイトの組み合わせられたビットデータの前又は後の前記ｋバイトの残余ビットデータを有する請求項７に記載の方法。
【請求項９】
前記設定されたビット順序は、それぞれ、前記残余ビットデータのｓ連続バイトに対応する前記組み合わせられたビットデータの１バイトのビット０〜ビット（ｓ−１）又はビット（ｓ−１）〜ビット０を有しており、ｘは、７超ではない自然数である請求項７に記載の方法。
【請求項１０】
前記既定のビットは、それぞれのバイトの最上位ビットである請求項７に記載の方法。
【請求項１１】
バイナリデータをエンコードする装置であって、
ｋバイトの長さを有するバイナリデータを取得するバイナリデータ取得ユニットであって、ｋは、自然数である、ユニットと、
既定のエンコードアルゴリズムを使用することにより、前記ｋバイトのバイナリデータを（ｋ＋ｔ）バイトの７ビットエンコード済みのデータに変換する７ビットエンコードユニットであって、ｔは、７によって除算されたｋ以上である最小の整数である、ユニットと、
を有する装置。
【請求項１２】
前記既定のエンコードアルゴリズムは、前記ｋバイトのバイナリデータのそれぞれのバイトの既定のビットを抽出し、且つ、設定されたビット順序に従って、前記既定のビットをｔバイトの７ビットエンコード済みの組み合わせられたビットデータに組み合わせるステップと、前記ｋバイトのバイナリデータのそれぞれのバイトの残りの７ビットをｋバイトの７ビットエンコード済みの残余ビットデータとして使用するステップと、前記バイナリデータの７ビットエンコード済みのデータを生成するべく、設定されたバイト順序に従って、前記ｋバイトの７ビットエンコード済みの残余ビットデータ及び前記ｔバイトの７ビットエンコード済みの組み合わせられたビットデータを配置するステップと、を有する請求項１１に記載の装置。
【請求項１３】
前記設定されたバイト順序は、前記対応するバイナリデータに従って配置された、前記ｔバイトの組み合わせられたビットデータの前又は後の前記ｋバイトの残余ビットデータを有する請求項１２に記載の装置。
【請求項１４】
前記設定されたビット順序は、前記バイナリデータのｓ連続バイトから抽出された前記既定のビットを前記組み合わせられたビットデータの１バイトのビット０〜ビット（ｓ−１）又はビット（ｓ−１）〜ビット０として使用するステップを有しており、ｓは、７超ではない自然数である請求項１２に記載の装置。
【請求項１５】
前記既定のビットは、それぞれのバイトの最上位ビットである請求項１２に記載の装置。
【請求項１６】
バイナリデータをデコードする装置であって、
ｐバイトの長さを有するデコード対象の７ビットエンコード済みのデータを取得するデコード対象のデータ取得ユニットであって、ｐは、１超の自然数である、ユニットと、
既定のデコードアルゴリズムを使用することにより、前記ｐバイトの７ビットエンコード済みのデータを（ｐ−ｔ）バイトのバイナリデータに変換する７ビットデコードユニットであって、ｔは、８によって除算されたｐ以上である最小の整数である、ユニットと、
を有する装置。
【請求項１７】
前記既定のデコードアルゴリズムは、設定されたバイト順序に従って、ｋバイトの残余ビットデータ及びｔバイトの組み合わせられたビットデータを前記ｐバイトの７ビットエンコード済みのデータから取得するステップであって、ｋは、ｐからｔを減算することによって得られた差である、ステップと、前記ｔバイトの７ビットエンコード済みの組み合わせられたビットデータからｋビットを抽出するステップと、前記抽出されたビットのそれぞれを前記ビットの設定されたビット順序に対応する前記ｋバイトの残余ビットデータの既定のビットに挿入し、これにより、ｋバイトのバイナリデータを取得するステップを有する請求項１６に記載の装置。
【請求項１８】
前記設定されたバイト順序は、前記対応するバイナリデータに従って配置された、前記ｔバイトの組み合わせられたビットデータの前又は後の前記ｋバイトの残余ビットデータを有する請求項１７に記載の装置。
【請求項１９】
前記設定されたビット順序は、それぞれ、前記残余ビットデータのｓ連続バイトに対応する前記組み合わせられたビットデータの１バイトのビット０〜ビット（ｓ−１）又はビット（ｓ−１）〜ビット０を有する請求項１７に記載の装置。
【請求項２０】
前記既定のビットは、それぞれのバイトの最上位ビットである請求項１７に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、ネットワーク通信の技術分野に関し、且つ、更に詳しくは、バイナリデータをエンコードする方法及び装置と、バイナリデータをデコードする方法及び装置と、に関する。
【背景技術】
【０００２】
コンピュータにおいて、多くのリソースは、写真、オーディオ／ビデオストリーム、及び実行可能プログラムなどの、バイナリデータの形態において保存されている。これらのリソースを収容するファイルは、通常、そのすべてがバイナリファイルである。但し、いくつかのネットワークプロトコル又はネットワークアプリケーションにおいては、正しく送信されうるデータは、ユニバーサル文字のみである。これらのネットワークプロトコル又はネットワークアプリケーションに基づいて送信される際には、まず、バイナリデータを送信側において文字データにエンコードする必要がある。受信側に対して送信された後に、この文字データは、バイナリデータにデコードされる。
【０００３】
現時点の技術において最も人気のあるバイナリデータエンコード及びデコード技術は、Ｂａｓｅ６４である。Ｂａｓｅ６４は、バイナリデータをエンコードするべく、６４個の文字を使用している。Ｎバイトのバイナリデータの場合には、対応する８＊Ｎビットのうちのそれぞれの６つの連続ビットが１つの部分として分離されている。それぞれの部分の値は、０〜６２の範囲である。この値は、ＡＳＣＩＩ（Ａｍｅｒｉｃａｎ  Ｓｔａｎｄａｒｄ  Ｃｏｄｅ  ｆｏｒ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｉｎｔｅｒｃｈａｎｇｅ）文字に対応している。バイナリデータのＢａｓｅ６４コードを取得するべく、すべての部分が対応しているＡＳＣＩＩ文字がスライスされる。対応するデコードプロセスは、上述のエンコードプロセスの逆であり、従って、ここでの更なる詳細な説明は、省略する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
３バイトのバイナリデータの場合に、Ｂａｓｅ６４エンコード済みのデータの長さが４バイトになることは、明らかである。バイナリファイルがＢａｓｅ６４エンコード済みのファイルに変換された後に、ファイル長さは、約３３％だけ、増大する。即ち、バイナリファイルは、Ｂａｓｅ６４エンコードの後に、送信において、約３分の１だけ多くのトラフィックを占有することになる。モバイルインターネットアプリケーションにおいては、すべてのサービスが、サーバー側とユーザーのハンドヘルド装置の間におけるやり取りのトラフィックを低減することが極めて重要である。Ｂａｓｅ６４エンコードの後に、文字ファイルは、相対的に大きくなり、これにより、いくつかの厳格なアプリケーションシナリオの要件を充足することが困難になる。
【課題を解決するための手段】
【０００５】
以上の内容に鑑み、本出願は、バイナリデータをエンコードする方法を提供しており、方法は、
ｋバイトの長さを有するバイナリデータを取得するステップであって、ｋは、自然数である、ステップと、
既定のエンコードアルゴリズムを使用することにより、ｋバイトのバイナリデータを（ｋ＋ｔ）バイトの７ビットエンコード済みのデータに変換するステップであって、ｔは、７によって除算されたｋ以上である最小の整数である、ステップと、
を有する。
【０００６】
本出願は、バイナリデータをデコードする方法を提供しており、方法は、
ｐバイトの長さを有するデコード対象の７ビットエンコード済みのデータを取得するステップであって、ｐは、１超の自然数である、ステップと、
既定のデコードアルゴリズムを使用することにより、ｐバイトの７ビットエンコード済みのデータを（ｐ−ｔ）バイトのバイナリデータに変換するステップと、
を有する。
【０００７】
本出願は、バイナリデータをエンコードする装置を更に提供しており、装置は、
ｋバイトの長さを有するバイナリデータを取得するバイナリデータ取得ユニットであって、ｋは、自然数である、ユニットと、
既定のエンコードアルゴリズムを使用することにより、ｋバイトのバイナリデータを（ｋ＋ｔ）バイトの７ビットエンコード済みのデータに変換する７ビットエンコードユニットであって、ｔは、７によって除算されたｋ以上の最小の整数である、ステップと、
を有する。
【０００８】
本出願は、バイナリデータをデコードする装置を提供しており、装置は、
ｐバイトの長さを有するデコード対象の７ビットエンコード済みのデータを取得するデコード対象データ取得ユニットであって、ｐは、１超の自然数である、ユニットと、
既定のデコードアルゴリズムを使用することにより、ｐバイトの７ビットエンコード済みのデータを（ｐ−ｔ）バイトのバイナリデータに変換する７ビットデコードユニットであって、ｔは、８によって除算されたｐ以上である最小の整数である、ユニットと、
を有する。
【０００９】
上述の技術的解決策から、本出願の実施形態においては、エンコードの際に、バイナリデータの７ビットエンコードを実施するべく、既定のエンコードアルゴリズムが使用されており、且つ、デコードの際には、７ビットエンコード済みのデータをバイナリデータに回復するべく、既定のデコードアルゴリズムが使用されていることがわかる。７バイトのバイナリデータが８バイトの７ビットエンコード済みのデータに変換されうることから、バイナリデータが７ビットエンコード済みのデータに変換された後に、長さは、約１４．３％だけ、増大する。従って、本出願の技術的解決策の採用の後に得られるエンコード済みのファイルは、Ｂａｓｅ６４エンコード済みのファイルよりも短く、ネットワーク上における送信の際に必要とされるデータトラフィックが少なく、従って、厳格な要件を有するアプリケーションシナリオに適している。
【図面の簡単な説明】
【００１０】
【図１】本出願の一実施形態における、バイナリデータをエンコードする方法のフロー図である。
【図２】本出願の一実施形態における、バイナリデータをデコードする方法のフロー図である。
【図３】本出願の一実施形態における、既定のエンコードアルゴリズムの一例の概略図である。
【図４】本出願の一実施形態における、代わりの既定のエンコードアルゴリズムの一例の概略図である。
【図５】本出願の一実施形態を稼働させる機器のハードウェア構造図である。
【図６】本出願の一実施形態における、バイナリデータをエンコードする装置の論理構造図である。
【図７】本出願の一実施形態における、バイナリデータをデコードする装置の論理構造図である。
【発明を実施するための形態】
【００１１】
大部分のエンコード方法においては、ネットワーク送信のために、ＡＳＣＩＩエンコード、ＵＴＦ−７（Ｕｎｉｃｏｄｅ  Ｔｒａｎｓｆｏｒｍａｔｉｏｎ  Ｆｏｒｍａｔ  ７：７ビットユニコード変換フォーマットの１つ）、及び７ビット等幅エンコードなどの、１０進値である０〜１２７が対応している文字を様々なネットワークプロトコル又はネットワークアプリケーションによってサポートすることができる。即ち、様々なアプリケーションにおいて、バイナリファイルが、上述のエンコード方法により、７ビットエンコード済みのファイルに変換された後に、それらを様々なプロトコルに従って送信することができる。
【００１２】
７ビットエンコードは、データを搬送するべく、１バイトの下位７ビットを使用するエンコード方法である。７ビットエンコードは、７バイトのバイナリデータを８バイトのエンコード済みのデータに変換することができる。３バイトのバイナリデータを４バイトに変換するＢａｓｅ６４エンコードとの比較において、これは、相対的に高い変換効率を有しており、変換の後のエンコード済みのファイルが相対的に小さく、この結果、送信トラフィックが節約される。
【００１３】
従って、本アプリケーションの実施形態は、バイナリデータをエンコードする新しい方法と、バイナリデータをデコードする対応する方法と、を提供している。これらは、ネットワーク送信において、エンコード済みのデータの長さを低減すると共にエンコード済みのデータによって消費されるトラフィックを節約することにより、現時点の技術における問題を解決するべく、それぞれ、バイナリデータを７ビットエンコード済みのデータに変換すると共に７ビットエンコード済みのデータをバイナリデータに回復するべく意図されている。
【００１４】
本出願の実施形態は、演算及び保存能力を有する任意の機器に適用することができる。例えば、機器は、携帯電話機、タブレットコンピュータ、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）、ノートブックコンピュータ、サーバー、仮想マシン、又は任意のその他の物理的機器又は論理的機器であってよい。或いは、この代わりに、本出願の実施形態における機能は、異なる仕事を担っている２つ以上の物理的又は論理的機器により、協働状態において実現されてもよく、この場合に、エンコード方法及びデコード方法は、個々に異なる機器上において、或いは、同一の機器上において、稼働することができる。
【００１５】
図１には、本出願の実施形態においてバイナリデータをエンコードする方法のフローが示されている。
【００１６】
ステップ１１０：バイナリデータを取得する。
【００１７】
変換対象のバイナリデータは、バイナリファイルであってもよく、或いは、ファイルの一部分としてのバイナリデータのセグメントであってもよい。制限は、課されていない。バイナリデータは、特定のネットワークの保存場所から読み取られてもよく、或いは、変換対象のバイナリデータは、指定されたキャッシュから取得されてもよい。これについても、本出願の実施形態は、制限を課すものではない。
【００１８】
取得されたバイナリデータの長さがｋバイト（ｋは、自然数である）であるものとしよう。
【００１９】
ステップ１２０：既定のエンコードアルゴリズムを使用することにより、ｋバイトのバイナリデータを（ｋ＋ｔ）バイトの７ビットエンコード済みのデータに変換する。この場合に、ｔは、ｋ／７以上である最小の整数である。
【００２０】
１バイトのバイナリデータは、８つの有効なビットを有している一方で、１バイトの７ビットエンコード済みのデータは、７つの有効なビットを有している。従って、バイナリデータが７ビットエンコード済みのデータに変換された際に、１〜７バイトのバイナリデータは、それぞれ、２〜８バイトの７ビットエンコード済みのデータによって表現されてもよく、且つ、エンコードの後の長さの増大は、１バイトであり、８〜１４バイトのバイナリデータは、それぞれ、１０〜１６バイトの７ビットエンコード済みのデータによって表現されてもよく、且つ、エンコードの後の長さの増大は、２バイトである。同一の方式により、ｋバイトのバイナリデータは、（ｋ＋ｔ）バイトの７ビットエンコード済みのデータによって表現されてもよく、この場合に、ｔは、ｋ／７以上である最小の整数である。換言すれば、ｋバイトのバイナリデータが７ビットエンコード済みのデータに変換された際に、長さの増大は、ｔバイトである。
【００２１】
ｋバイトのバイナリデータの（ｋ＋ｔ）バイトの７ビットエンコード済みのデータへの１対１のマッピングを実行しうる任意のアルゴリズムを既定のエンコードアルゴリズムとして使用することができる。本出願の実施形態は、制限を課すものではない。
【００２２】
図２には、本出願の実施形態においてバイナリデータをデコードする方法のフローが示されている。
【００２３】
ステップ２１０：デコード対象の７ビットエンコード済みのデータを取得する。
【００２４】
デコード対象の７ビットエンコード済みのデータは、同様に、エンコード済みのファイルであってもよく、或いは、ファイルの一部分としての７ビットエンコード済みのデータのセグメントであってもよい。制限は課されていない。７ビットエンコード済みのデータは、特定のネットワークの保存場所から読み取られてもよく、或いは、デコード対象の７ビットエンコード済みのデータは、指定されたキャッシュから取得されてもよい。これについても、本出願の実施形態は、制限を課すものではない。
【００２５】
デコード対象の７ビットエンコード済みのデータの長さをｐ（ｐは、１超の自然数である）バイトであるとしよう。
【００２６】
ステップ２２０：既定のデコードアルゴリズムを使用することにより、ｐバイトの７ビットエンコード済みのデータを（ｐ−ｔ）バイトのバイナリデータに変換する。この場合に、ｔは、ｐ／８以上である最小の整数である。
【００２７】
上述のように、２〜８バイトの７ビットエンコード済みのデータは、それぞれ、１〜７バイトのバイナリデータを表現してもよく、且つ、デコードの後の長さの低減は、１バイトであり、１０〜１６バイトの７ビットエンコード済みのデータは、それぞれ、８〜１４バイトのバイナリデータを表現してもよく、且つ、デコードの後の長さの低減は、２バイトである。同一の方式により、ｐバイトの７ビットエンコード済みのデータは、（ｐ−ｔ）バイトのバイナリデータを表現してもよく、この場合に、ｔは、ｐ／８以上である最小の整数である。換言すれば、ｐバイトの７ビットエンコード済みのデータがバイナリデータに変換された際に、長さの低減は、ｔバイトである。
【００２８】
本出願の実施形態においては、バイナリデータが７ビットエンコード済みのデータに変換された際に使用された既定のエンコードアルゴリズムを逆転させる、且つ、ｐバイトの７ビットエンコード済みのデータを（ｐ−ｔ）バイトのエンコード前のバイナリデータに回復しうる、アルゴリズムを既定のデコードアルゴリズムとして使用することができる。
【００２９】
１つの実装モードにおいては、エンコードは、１バイトのバイナリデータが８ビットから構成されている、という考え方に基づいて実施することができる。７ビットエンコードは、１バイトのうちの下位７ビットのみを使用しうることから、１バイトのバイナリデータは、７ビットエンコードの１バイトと、余分な１バイトのうちの１ビットと、により、表現する必要がある。１バイトの８ビットバイナリデータが２つの部分に分割されうる。特定の既定のビット（ビット０〜ビット７のうちの任意のビットであってよい）が、余分なバイトによって表現される１ビットとして使用され、且つ、この既定のビットを除いた残りの７ビットは、７ビットエンコードの１バイトによって表現される。余分なバイトのうちのその他の６ビットは、バイナリデータの６つのその他のバイトの既定のビットを搬送するべく、使用することができる。この結果、７バイトのバイナリデータが７ビットエンコードにマッピングされる際には常に、１バイトが追加されることになり、且つ、７未満のバイトのバイナリデータが７ビットエンコードにマッピングされる際にも、１バイトが追加されることになる。従って、ｋバイトのバイナリデータが７ビットエンコードにマッピングされる際には、ｔバイトが追加されることになる。
【００３０】
一例においては、この実装モードにおける既定のエンコードアルゴリズムは、ｋバイトのバイナリデータのうちのそれぞれのバイトの既定のビットを抽出し、設定されたビット順序に従って、既定のビットをｔバイトの７ビットエンコード済みの組み合わせられたビットデータに組み合わせ、ｋバイトのバイナリデータのそれぞれのバイトの残りの７ビットをｋバイトの７ビットエンコード済みの残余ビットデータとして使用し、且つ、設定されたバイト順序に従って、ｋバイトの７ビットエンコード済みの残余ビットデータ及びｔバイトの７ビットエンコード済みの組み合わせられたビットデータを配置し、これにより、（ｋ＋ｔ）バイトの７ビットエンコード済みのデータを取得する、という方式によって動作することができる。
【００３１】
相応する方式により、デコードの際には、この実装モードにおける既定のデコードアルゴリズムは、ｐが（ｋ＋ｔ）に等しいことから、ｐバイトの７ビットエンコード済みのデータは、設定されたバイト順序に従って配置された、ｔバイトの７ビットエンコード済みの組み合わせられたビットデータ及びｋバイトの７ビットエンコード済みの残余ビットデータを含む、という方式により、動作することができる。ｔバイトの組み合わせられたビットデータ及びｋバイトの残余ビットデータが、設定されたバイト順序に従って識別された後に、ｋビットが、設定されたビット順序に従って、ｔバイトの組み合わせられたビットデータから抽出され、且つ、抽出されたビットのそれぞれが、ビットの設定されたビット順序に対応するｋバイトの残余ビットデータの既定のビットに挿入され、これにより、ｋバイトのバイナリデータが取得される。
【００３２】
設定されたビット順序及び設定されたバイト順序は、既定のエンコードアルゴリズム及び既定のデコードアルゴリズムが同一の設定されたビット順序及び設定されたバイト順序を利用している限り、自由に構成することができる。例えば、設定されたビット順序は、それぞれ、残余ビットデータのｓ（ｓは、７超ではない自然数である）連続バイトに対応する、組み合わせられたビットデータの１バイトのビット０〜ビット（ｓ−１）又はビット（ｓ−１）〜ビット０であってよい。別の例として、設定されたビット順序は、ｔバイトの組み合わせられたビットデータの前のｋバイトの残余ビットデータ、或いは、ｋバイトの残余ビットデータの前のｔバイトの組み合わせられたビットデータ、であってもよく、且つ、ｋバイトの残余ビットデータは、対応するバイナリデータに従って配置されている。
【００３３】
上述の実装モードの２つの具体的な例を以下において提供する。
【００３４】
例１：図３を参照されたい。既定のエンコードアルゴリズムにおいては、最上位ビットが既定のビットとして使用されてもよく、且つ、ｋバイトのバイナリデータの最上位ビット（７番目のビット）は、組み合わせられたビットデータの第１バイトのビット６〜ビット０、組み合わせられたビットデータの第２バイトのビット６〜ビット０．．．、という設定されたビット順序において、ｔバイトの組み合わせられたビットデータを生成している。ｋバイトのバイナリデータのそれぞれのものの内部のビット０〜ビット６は、ｋバイトの残余ビットデータとして使用されている。ｋバイトのバイナリデータの７ビットエンコード済みのデータの（ｋ＋ｔ）バイトを取得するべく、ｔバイトの組み合わせられたビットデータが、ｋバイトの残余ビットデータの前に配置されている。
【００３５】
第１例の既定のデコードアルゴリズムにおいては、７ビットエンコード済みデータのｐ（ｐ＝ｋ＋ｔ）バイトの最初のｔバイトが、組み合わせられたビットデータとして使用され、且つ、最後のｋバイトが、残余ビットデータとして使用されている。ｋ個の既定のビットが、組み合わせられたビットデータの第１バイトのビット６〜ビット０、組み合わせられたビットデータの第２バイトのビット６〜ビット０．．．という設定されたビット順序に従って、ｔバイトの組み合わせられたビットデータから抽出される。そして、ｋバイトのバイナリデータを取得するべく、順序どおりに抽出された既定のｋビットが、ｋバイトの残余ビットデータの最上位ビットに挿入される。
【００３６】
例２：図４を参照されたい。別の既定のエンコードアルゴリズムにおいては、４番目のビットが、既定のビットとして使用され、且つ、７連続バイトのバイナリデータがグループとして取り扱われている。７未満バイトのデータが残っている場合には、残りのデータも、グループとして使用され、ｋバイトのバイナリデータは、ｔ個のグループを形成することになる。グループを単位として使用することにより、バイナリデータのグループ内のそれぞれのバイトの既定のビットが抽出され、ビット０からビット６への設定されたビット順序に従って、１バイトの組み合わせられたビットデータが生成され、且つ、７ビットエンコード済みの残余ビットデータを取得するべく、グループ内のバイナリデータのそれぞれのバイトのビット５〜ビット７が、１ビットだけ、右方向にシフトされる。それぞれのグループの組み合わせられたビットデータは、グループの残余ビットデータの前に配置され、且つ、グループを単位として使用することにより、（ｋ＋ｔ）バイトの７ビットエンコード済みのデータを取得するべく、ｔ個のグループが配置される。
【００３７】
第２例の既定のデコードアルゴリズムにおいては、８連続バイトの７ビットエンコード済みのデータがグループとして取り扱われている。８未満の数のバイトが残っている場合には、残っているデータも、グループとして取り扱われ、この結果、ｐ（ｐ＝ｋ＋ｔ）バイトのバイナリデータがｔ個のグループを形成することになる。グループを単位として使用することにより、特定のグループが（ｓ＋１）（ｓは、７超ではない自然数である）バイトを合計で有すると仮定すれば、グループ内の第１バイトは、組み合わせられたビットデータであり、且つ、第２バイト〜（ｓ＋１）番目のバイトは、ｓバイトの残余ビットデータであり、ｓバイトのバイナリデータを取得するべく、グループ内の組み合わせられたビットデータのビット０〜ビットｓが、それぞれ、グループ内の残余ビットデータの第２バイト〜（ｓ＋１）番目のバイトの第４ビットに挿入される。ｋバイトのデコード済みのバイナリデータを取得するべく、それぞれのグループから取得されたバイナリデータが配置される。
【００３８】
本出願の実施形態においては、エンコードの際に、バイナリデータを７ビットエンコード済みのデータに変換するべく、既定のエンコードアルゴリズムが利用されており、且つ、デコードの際には、７ビットエンコード済みのデータをバイナリデータに回復するべく、対応する既定のデコードアルゴリズムが利用されていることがわかる。バイナリデータが７ビットエンコード済みのデータに変換された後に、約１４．３％だけ、データの長さが増大し、これは、Ｂａｓｅ６４エンコードの際の長さの増大よりも格段に小さいことから、本出願の実施形態の採用の後に得られるエンコード済みのファイルは、ネットワーク上における送信の際に必要とされるトラフィックが相対的に少なく、従って、厳格な要件を有するアプリケーションシナリオに適している。
【００３９】
本出願の一適用例においては、エンコードアルゴリズムは、写真由来の．ｊｐｇのデータを７ビットＡＳＣＩＩエンコード済みのデータに変換するべく、利用されており、且つ、対応するデコードアルゴリズムは、７ビットＡＳＣＩＩエンコード済みのデータをバイナリデータに回復している。
【００４０】
エンコード方法を実現するＪａｖａ（登録商標）Ｓｃｒｉｐｔプログラムは、以下のとおりである。
var buf = new Buffer(1024); // エンコードに使用されるバッファゾーンを確立する
2019537332.tif 000003
は、写真由来の．ｊｐｇのバイナリデータである
var length = data.length + Math.ceil(data.length / 7); // ｌｅｎｇｔｈは、変換後の７ビットエンコード済みのデータの長さである
var body = new Buffer(length); // ｂｏｄｙは、変換後の７ビットエンコード済みのデータである
var offset = 0; 
var swap = 0; 
var count = 0; 
for (var i = 0; i < data.length, i++) ｛
swap | = ( (data [i] & 0x80) >> (i% 7 + 1) ); 
count ++; 
if (i===data.length - 1 ||count % 7===0) ｛
body.writeUInt8(swap, ++offset); 
swap=0; 
｝
｝// ｄａｔａの第１バイトから開始することにより、それぞれの７バイトの最上位ビットが、ＡＳＣＩＩエンコード済みの組み合わせられたビットデータを生成するべく、組み合わせられており、この場合に、それぞれの７バイトのうちのバイナリデータの第７バイトの最上位ビットは、ビット０に位置しており、且つ、バイナリデータの第１バイトの最上位ビットは、ビット６に位置している。組み合わせられたビットデータは、ｄａｔａの最後のバイトまで、１つずつ、ｂｏｄｙに書き込まれる
for (var i=0; i < data.length; i++) ｛
body.writeUInt8(data [i] & 0x7f, ++offset); 
｝// ｄａｔａの最初のバイトから開始することにより、それぞれのバイトの下位７ビットが、ＡＳＣＩＩエンコード済みの残余ビットデータを生成するべく、使用されており、且つ、これらは、１つずつ、ｂｏｄｙに書き込まれる
【００４１】
ｔｅｍｐが、デコード対象の７ビットエンコード済みのデータであると仮定すれば、デコード方法を実現するＪａｖａ（登録商標）Ｓｃｒｉｐｔプログラムは、以下の通りである。
var len=temp.length - Math.ceil(temp.length / 8); // ｌｅｎは、デコード後のバイナリデータの長さである
var buf = new Buffer(len), // ｂｕｆは、デコード後のバイナリデータである
for (var i = 0; i < buf.length; i++) ｛
var swap = 0; 
swap | ＝ ((temp.readUInt8 (parseInt(i / 7)) << (i% 7 + 1)) & 0x80); 
swap | = temp.readUInt8(i+temp.length - len); 
buf.writeUInt8(swap, i); 
｝ // ｔｅｍｐの最初（ｔｅｍｐ．ｌｅｎｇｔｈ  −  ｌｅｎ）のバイトは、組み合わせられたビットデータであり、且つ、残りのものは、残余ビットデータであり、次いで、組み合わせられたビットデータの第１バイトから開始することにより、それぞれのバイトのビット６〜ビット０が、抽出され、且つ、次いで、残余ビットデータの最上位ビットに挿入され、且つ、ｂｕｆに書き込まれる
【００４２】
上述のフローの実装形態に対応することにより、本出願の実施形態は、バイナリデータをエンコードする装置及びバイナリデータをデコードする装置を更に提供している。これらの２つの装置は、いずれも、ソフトウェアを通じて、ハードウェアを通じて、或いは、ハードウェアとソフトウェアの組合せを通じて、実装することができる。一例としてソフトウェアを通じた実装形態をとりあげれば、論理的な意味における装置は、対応するコンピュータプログラムコマンドをメモリに読み込むと共にこれらを実行する、機器のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓ  Ｕｎｉｔ）を通じて形成される。ハードウェアの観点においては、図５に示されているように、ＣＰＵ、メモリ、及びＮＶＭ（ＮｏｎＶｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ）に加えて、バイナリデータをエンコードする装置又はバイナリデータをデコードする装置が配置される機器は、通常、高周波信号を送受信するチップ及び／又はネットワーク通信の機能を実現する基板カードなどの、その他のハードウェアをも含む。
【００４３】
図６は、バイナリデータ取得ユニットと、７ビットエンコードユニットと、を有する、本出願の一実施形態におけるバイナリデータをエンコードする装置を示している。バイナリデータ取得ユニットは、ｋバイトの長さを有するバイナリデータを取得するためのものであり、この場合に、ｋは、自然数である。７ビットエンコードユニットは、既定のエンコードアルゴリズムを使用することにより、ｋバイトのバイナリデータを（ｋ＋ｔ）バイトの７ビットエンコード済みのデータに変換するためのものであり、この場合に、ｔは、ｋ／７以上である最小の整数である。
【００４４】
１つの実装モードにおいては、既定のエンコードアルゴリズムは、ｋバイトのバイナリデータのそれぞれのバイトの既定のビットを抽出し、且つ、設定されたビット順序に従って、それらを７ビットエンコード済みの組み合わせられたビットデータに組み合わせるステップと、ｋバイトのバイナリデータのそれぞれのバイトの残りの７ビットをｋバイトの７ビットエンコード済みの残余ビットデータとして使用するステップと、バイナリデータの７ビットエンコード済みのデータを生成するべく、設定されたバイト順序に従って、ｋバイトの７ビットエンコード済みの残余ビットデータ及びｔバイトの７ビットエンコード済みの組み合わせられたビットデータを配置するステップと、を有する。
【００４５】
上述の実装モードにおいては、設定されたバイト順序は、対応するバイナリデータに従って配置された、ｔバイトの組み合わせられたビットデータの前又は後のｋバイトの残余ビットデータを含む。
【００４６】
この実装モードにおいては、設定されたビット順序は、ｓ連続バイトのバイナリデータから抽出された既定のビットを組み合わせられたビットデータの１バイトのビット０〜ビット（ｓ−１）又はビット（ｓ−１）〜ビット０として使用するステップを含んでおり、この場合に、ｓは、７超ではない自然数である。
【００４７】
上述の実装モードにおいては、既定のビットは、それぞれのバイトの最上位ビットである。
【００４８】
図７は、デコード対象データ取得ユニットと、７ビットデコードユニットと、を有する、本出願の一実施形態におけるバイナリデータをデコードする装置を示している。デコード対象データ取得ユニットは、ｐバイトの長さを有するデコード対象の７ビットエンコード済みのデータを取得するためのものであり、この場合に、ｐは、１超の自然数である。７ビットデコードユニットは、既定のデコードアルゴリズムを使用することにより、ｐバイトの７ビットエンコード済みのデータを（ｐ−ｔ）バイトのバイナリデータに変換するためのものであり、この場合に、ｔは、ｐ／８以上である最小の整数である。
【００４９】
一実装モードにおいては、既定のデコードアルゴリズムは、設定されたバイト順序に従って、ｋバイトの残余ビットデータ及びｔバイトの組み合わせられたビットデータをｐバイトの７ビットエンコード済みのデータから取得するステップであって、ｋは、ｐからｔを減算することによって取得された差である、ステップと、ｋビットをｔバイトの７ビットエンコード済みの組み合わせられたビットデータから抽出するステップと、抽出されたビットのそれぞれをビットの設定されたビット順序に対応するｋバイトの残余ビットデータの既定のビットに挿入し、これにより、ｋバイトのバイナリデータを取得するステップと、を有する。
【００５０】
上述の実装モードにおいては、設定されたバイト順序は、対応するバイナリデータに従って配置された、ｔバイトの組み合わせられたビットデータの前又は後のｋバイトの残余ビットデータを含む。
【００５１】
上述の実装モードにおいては、設定されたビット順序は、それぞれ、ｓ連続バイトの残余ビットデータに対応する組み合わせられたビットデータの１バイトのビット０〜ビット（ｓ−１）又はビット（ｓ−１）〜ビット０を含んでおり、この場合に、ｓは、７超ではない自然数である。
【００５２】
上述の実装モードにおいては、既定のビットは、それぞれのバイトの最上位ビットである。
【００５３】
上述の説明は、本出願の好適な実施形態であり、且つ、本出願の限定を意図したものではない。本出願の精神及び原理を逸脱することなしに実施されるすべての変更、等価な置換、及び改善は、本出願の範囲に含まれるものとする。
【００５４】
通常の一構成においては、演算機器は、１つ又は複数のプロセッサ（ＣＰＵ）と、入出力インターフェイスと、ネットワークインターフェイスと、内部メモリと、を有する。
【００５５】
内部メモリは、コンピュータ可読媒体のうち、揮発性メモリ、ランダムアクセスメモリ（ＲＡＭ：Ｒａｎｃｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、並びに／或いは、読み出し専用メモリ（ＲＯＭ：Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）又はフラッシュメモリ（フラッシュＲＡＭ）などの、不揮発性メモリの形態を有することができる。内部メモリは、コンピュータ可読媒体の一例である。
【００５６】
コンピュータ可読媒体は、不揮発性、揮発性、着脱自在、及び非着脱自在の媒体を含み、且つ、任意の方法又は技術によって情報保存を実現することができる。情報は、コンピュータ可読命令、データ構造、プログラムモジュール、又はその他のデータであってよい。コンピュータストレージ媒体の例は、限定を伴うことなしに、相変化ランダムアクセスメモリ（ＰＲＡＭ：Ｐｈａｓｅ  Ｃｈａｎｇｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、スタティックランダムアクセスメモリ（ＳＲＡＭ：Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ：Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、及びその他のタイプのランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、電気的に消去可能なプログラム可能な読み出し専用メモリ（ＥＥＰＲＯＭ：Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ又はその他のメモリ技術、コンパクトディスク―読み出し専用メモリ（ＣＤ−ＲＯＭ：Ｃｏｍｐａｃｔ  Ｄｉｓｃ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、デジタルバーサタイルディスク（ＤＶＤ：Ｄｉｇｉｔａｌ  Ｖｉｄｅｏ  Ｄｉｓｋ）又はその他の光メモリ、カセットタイプ磁気テープ、テープディスクメモリ又はその他の磁気ストレージ装置、又は任意のその他の非転送媒体を含む。これらは、コンピュータ装置からアクセス可能な情報を保存するべく使用することができる。本明細書における定義に従って、コンピュータ可読媒体は、変調されたデータ信号及び搬送波などの、一時的な媒体を含んではいない。
【００５７】
「含む（ｉｎｃｌｕｄｅ）」、「収容する（ｃｏｎｔａｉｎ）」という用語、或いは、これらの変形は、一連の要素を含むプロセス、方法、物品、又は機器が、これらの要素を含むのみならず、明示的に記述されてはいないその他の要素をも含むように、或いは、そのようなプロセス、方法、物品、又は機器に固有の装置をも含むように、非排他的包含をカバーするべく意図されていることに更に留意されたい。そうではない旨が規定されていない限り、「１つの〜を含む」というフレーズによって定義された要素は、それらの要素を含むプロセス、方法、物品、又は機器内におけるその他の類似の要素の存在を排除するものではない。
【００５８】
当業者は、本出願の実施形態は、方法、システム、又はコンピュータプログラムとして提供されてもよく、従って、本出願は、純粋にソフトウェア実施形態の形態、純粋にハードウェア実施形態の形態、又はソフトウェアとハードウェアを組み合わせた実施形態の形態を採用しうることを理解するであろう。更には、本出願は、コンピュータ使用可能なプログラムコードを含む（限定を伴うことなしに、ディスクメモリ、ＣＤ−ＲＯＭ、及び光メモリを含む）１つ又は複数のコンピュータ使用可能なストレージ媒体上において実装されたコンピュータプログラムプロダクトの形態を採用することができる。
【図１】
2019537332.tif 000004
【図２】
2019537332.tif 000005
【図３】
2019537332.tif 000006
【図４】
2019537332.tif 000007
【図５】
2019537332.tif 000008
【図６】
2019537332.tif 000009
【図７】
2019537332.tif 000010
【国際調査報告】
2019537332.tif 000011
2019537332.tif 000012
2019537332.tif 000013
2019537332.tif 000014
2019537332.tif 000015