IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 黒川 敦の特許一覧

特許7457403情報処理装置、プログラム、データ構造、及び情報処理方法
<>
  • 特許-情報処理装置、プログラム、データ構造、及び情報処理方法 図1
  • 特許-情報処理装置、プログラム、データ構造、及び情報処理方法 図2
  • 特許-情報処理装置、プログラム、データ構造、及び情報処理方法 図3
  • 特許-情報処理装置、プログラム、データ構造、及び情報処理方法 図4
  • 特許-情報処理装置、プログラム、データ構造、及び情報処理方法 図5
  • 特許-情報処理装置、プログラム、データ構造、及び情報処理方法 図6
  • 特許-情報処理装置、プログラム、データ構造、及び情報処理方法 図7
  • 特許-情報処理装置、プログラム、データ構造、及び情報処理方法 図8
  • 特許-情報処理装置、プログラム、データ構造、及び情報処理方法 図9
  • 特許-情報処理装置、プログラム、データ構造、及び情報処理方法 図10
  • 特許-情報処理装置、プログラム、データ構造、及び情報処理方法 図11
  • 特許-情報処理装置、プログラム、データ構造、及び情報処理方法 図12
  • 特許-情報処理装置、プログラム、データ構造、及び情報処理方法 図13
  • 特許-情報処理装置、プログラム、データ構造、及び情報処理方法 図14
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-19
(45)【発行日】2024-03-28
(54)【発明の名称】情報処理装置、プログラム、データ構造、及び情報処理方法
(51)【国際特許分類】
   H03M 7/40 20060101AFI20240321BHJP
【FI】
H03M7/40
【請求項の数】 15
(21)【出願番号】P 2022156747
(22)【出願日】2022-09-29
(65)【公開番号】P2023050192
(43)【公開日】2023-04-10
【審査請求日】2022-09-29
(31)【優先権主張番号】P 2021159880
(32)【優先日】2021-09-29
(33)【優先権主張国・地域又は機関】JP
【早期審査対象出願】
【前置審査】
(73)【特許権者】
【識別番号】519446702
【氏名又は名称】黒川 敦
(74)【代理人】
【識別番号】110001139
【氏名又は名称】SK弁理士法人
(74)【代理人】
【識別番号】100130328
【弁理士】
【氏名又は名称】奥野 彰彦
(74)【代理人】
【識別番号】100130672
【弁理士】
【氏名又は名称】伊藤 寛之
(72)【発明者】
【氏名】黒川 敦
【審査官】阿部 弘
(56)【参考文献】
【文献】特開2011-010124(JP,A)
【文献】特開2016-046602(JP,A)
【文献】特開平07-084755(JP,A)
【文献】特開平06-083630(JP,A)
【文献】特開2011-056751(JP,A)
【文献】特開2004-194185(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H03M 7/40
H03M 7/30
(57)【特許請求の範囲】
【請求項1】
第1変換部を備える情報処理装置であって、
前記第1変換部は、記録部分生成部と、個数指定部分生成部と、結合部とを備え、
前記記録部分生成部は、整数型、小数型及び文字型を含む既知のデータ型を有する第1電子データのビット列から、第1所定ビット長の単位データを順次抽出することで、一つ以上の前記単位データで構成された記録部分を生成し、
前記個数指定部分生成部は、前記記録部分の前記単位データの個数を個数指定値としてカウントし、当該個数指定値の情報を含むとともに当該個数指定値に応じた可変長の個数指定部分を生成し、
前記結合部は、前記記録部分生成部が生成した前記記録部分と前記個数指定部分生成部が生成した前記個数指定部分とを結合して前記記録部分と前記個数指定部分とを有する第2電子データを生成する、
情報処理装置。
【請求項2】
請求項1に記載の情報処理装置であって、
前記個数指定部分生成部は、前記個数指定部分から前記個数指定値のビット長が取得可能となるよう、下記(1)又は(2)の構成を備える、
情報処理装置。
(1)前記個数指定部分の先頭に、前記個数指定値のビット長を示す第2所定ビット長の個数指定値指定部分を配置する。
(2)前記個数指定値のビット列を、第3所定ビット長を有するとともに継続フラグによって後続の有無を判別可能な一つ以上の分割部分に分割する。
【請求項3】
請求項1に記載の情報処理装置であって、
前記第2電子データは、前記第1電子データと相互に変換可能である、情報処理装置。
【請求項4】
請求項1又は請求項2に記載の情報処理装置であって、
前記第1変換部は、前記第1電子データのビット列のうち値を格納しない不使用部分を省いて前記記録部分を生成することにより、データ長が短縮された前記第2電子データを生成する、情報処理装置。
【請求項5】
請求項1又は請求項2に記載の情報処理装置であって、
前記第1変換部は、識別部分生成部をさらに備え、
前記識別部分生成部は、前記第1電子データのデータ型を取得し、当該データ型に対応する識別値の情報を含む識別部分を生成し、
前記結合部は、前記個数指定部分及び前記記録部分に加えて前記識別部分を結合して、前記個数指定部分と前記記録部分と前記識別部分とを有する前記第2電子データを生成する、
情報処理装置。
【請求項6】
請求項1又は請求項2に記載の情報処理装置であって、
第2変換部をさらに備え、
前記第2変換部は、個数指定値取得部と、単位データ合算部とを備え、
前記個数指定値取得部は、前記第2電子データの前記個数指定部分から前記個数指定値を取得し、
前記単位データ合算部は、前記個数指定値取得部が取得した前記個数指定値に基づいて前記第1所定ビット長の単位で桁をずらしながら前記記録部分に含まれる前記単位データを順次合算することで、前記第1電子データを生成する、
情報処理装置。
【請求項7】
第2変換部を備える情報処理装置であって、
前記第2変換部は、記録部分と個数指定部分とを有する第2電子データを、整数型、小数型及び文字型を含む既知のデータ型を有する第1電子データに変換するよう構成されるとともに、個数指定部分ビット長取得部と、個数指定値取得部と、単位データ合算部と、を備え、
前記記録部分は、第1所定ビット長を有する一つ以上の単位データで構成され、
前記個数指定部分は、前記単位データの個数を示す個数指定値の情報を含むとともに、当該個数指定値に応じて可変長とされ、
前記個数指定部分ビット長取得部は、前記個数指定部分のビット長を取得し、
前記個数指定値取得部は、前記個数指定部分ビット長取得部が取得した前記個数指定部分のビット長に基づいて前記個数指定部分から前記個数指定値を取得し、
前記単位データ合算部は、前記個数指定値取得部が取得した前記個数指定値に基づいて前記第1所定ビット長の単位で桁をずらしながら前記記録部分に含まれる前記単位データを順次合算することで、前記第1電子データを生成する、
情報処理装置。
【請求項8】
コンピュータに、整数型、小数型及び文字型を含む既知のデータ型を有する第1電子データのビット列から、第1所定ビット長の単位データを順次抽出させることで、一つ以上の前記単位データで構成された記録部分を生成させ、
コンピュータに、前記記録部分の前記単位データの個数を個数指定値としてカウントさせ、当該個数指定値の情報を含むとともに当該個数指定値に応じた可変長の個数指定部分を生成させ、
コンピュータに、前記記録部分と前記個数指定部分とを結合させて、前記記録部分と前記個数指定部分とを有する第2電子データを生成させる、
プログラム。
【請求項9】
コンピュータにより、整数型、小数型及び文字型を含む既知のデータ型を有する第1電子データのビット列から、第1所定ビット長の単位データを順次抽出することで、一つ以上の前記単位データで構成された記録部分を生成し、
コンピュータにより、前記記録部分の前記単位データの個数を個数指定値としてカウントし、当該個数指定値の情報を含むとともに当該個数指定値に応じた可変長の個数指定部分を生成し、
コンピュータにより、前記記録部分と前記個数指定部分とを結合して、前記記録部分と前記個数指定部分とを有する第2電子データを生成する、
情報処理方法。
【請求項10】
第1変換部を備える情報処理装置であって、
前記第1変換部は、記録部分生成部と、個数指定部分生成部と、識別部分生成部と、結合部とを備え、
前記記録部分生成部は、整数型、小数型及び文字型を含む既知のデータ型を有する第1電子データのビット列から、第1所定ビット長の単位データを順次抽出することで、一つ以上の前記単位データで構成された記録部分を生成し、
前記個数指定部分生成部は、前記記録部分の前記単位データの個数を個数指定値としてカウントし、当該個数指定値の情報を含む個数指定部分を生成し、
前記識別部分生成部は、前記第1電子データのデータ型を取得し、当該データ型に対応する識別値の情報を含む識別部分を生成し、
前記結合部は、前記記録部分生成部が生成した前記記録部分と前記個数指定部分生成部が生成した前記個数指定部分と前記識別部分生成部が生成した前記識別部分とを結合して、前記記録部分と前記個数指定部分と前記識別部分とを有する第2電子データを生成する、
情報処理装置。
【請求項11】
第2変換部を備える情報処理装置であって、
前記第2変換部は、記録部分と個数指定部分と識別部分とを有する第2電子データを、整数型、小数型及び文字型を含む既知のデータ型を有する第1電子データに変換するよう構成されるとともに、個数指定値取得部と、単位データ合算部と、識別部とを備え、
前記記録部分は、第1所定ビット長を有する一つ以上の単位データで構成され、
前記個数指定部分は、前記単位データの個数を示す個数指定値の情報を含み、
前記識別部分は、前記第2電子データの変換元である前記第1電子データのデータ型に対応する識別値の情報を含み、
前記個数指定値取得部は、前記個数指定部分から前記個数指定値を取得し、
前記識別部は、前記識別部分から前記識別値を取得して当該識別値から前記第1電子データのデータ型を識別し、
前記単位データ合算部は、前記個数指定値取得部が取得した前記個数指定値に基づいて前記第1所定ビット長の単位で桁をずらしながら前記記録部分に含まれる前記単位データを順次合算することで、前記識別部が識別した前記データ型を有する前記第1電子データを生成する、
情報処理装置。
【請求項12】
コンピュータに、整数型、小数型及び文字型を含む既知のデータ型を有する第1電子データのビット列から、所定の単位ビット列又は所定の単位バイト列を単位データとして順次抽出させることで、一つ以上の前記単位データで構成された記録部分を生成させ、
コンピュータに、前記記録部分の前記単位データの個数を個数指定値としてカウントさせ、当該個数指定値の情報を含む個数指定部分を生成させ、
コンピュータに、前記第1電子データのデータ型を取得させ、当該データ型に対応する識別値の情報を含む識別部分を生成させ、
コンピュータに、前記記録部分と前記個数指定部分と前記識別部分とを結合させて、前記記録部分と前記個数指定部分と前記識別部分とを有する第2電子データを生成させる、
プログラム。
【請求項13】
コンピュータに、記録部分と個数指定部分と識別部分とを有する第2電子データを整数型、小数型及び文字型を含む既知のデータ型を有する第1電子データに変換させるプログラムであって、
前記記録部分は、第1所定ビット長を有する一つ以上の単位データで構成され、
前記個数指定部分は、前記単位データの個数を示す個数指定値の情報を含み、
前記識別部分は、前記第2電子データの変換元である前記第1電子データのデータ型に対応する識別値の情報を含み、
コンピュータに、前記第2電子データの前記個数指定部分から前記個数指定値を取得させ、
コンピュータに、前記第2電子データの前記識別部分から前記識別値を取得させて当該識別値から前記第1電子データのデータ型を識別させ、
コンピュータに、前記個数指定値に基づいて前記第1所定ビット長の単位で桁をずらしながら前記記録部分に含まれる前記単位データを順次合算させることで、前記識別させたデータ型を有する前記第1電子データを生成させる、プログラム。
【請求項14】
コンピュータにより、整数型、小数型及び文字型を含む既知のデータ型を有する第1電子データのビット列から、第1所定ビット長の単位データを順次抽出することで、一つ以上の前記単位データで構成された記録部分を生成し、
コンピュータにより、前記記録部分の前記単位データの個数を個数指定値としてカウントし、当該個数指定値の情報を含む個数指定部分を生成し、
コンピュータにより、前記第1電子データのデータ型を取得し、当該データ型に対応する識別値の情報を含む識別部分を生成し、
コンピュータにより、前記記録部分と前記個数指定部分と前記識別部分とを結合して、前記記録部分と前記個数指定部分と前記識別部分とを有する第2電子データを生成する、
情報処理方法。
【請求項15】
コンピュータにより、記録部分と個数指定部分と識別部分とを持つ第2電子データを整数型、小数型及び文字型を含む既知のデータ型を有する第1電子データに変換する方法であって、
前記記録部分は、第1所定ビット長を有する一つ以上の単位データで構成され、
前記個数指定部分は、前記単位データの個数を示す個数指定値の情報を含み、
前記識別部分は、前記第2電子データの変換元である前記第1電子データのデータ型に対応する識別値の情報を含み、
コンピュータにより、前記第2電子データの前記個数指定部分から前記個数指定値を取得し、
コンピュータにより、前記第2電子データの前記識別部分から前記識別値を取得して当該識別値から前記第1電子データのデータ型を識別し、
コンピュータにより、前記個数指定値に基づいて前記第1所定ビット長の単位で桁をずらしながら前記記録部分に含まれる前記単位データを順次合算することで、前記識別したデータ型を有する前記第1電子データを生成する、情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、プログラム、データ構造、及び情報処理方法に関する。
【背景技術】
【0002】
例えば特許文献1に記載されるように、プログラム言語において文字型や整数型などのデータ型が用いられる。
【先行技術文献】
【特許文献】
【0003】
【文献】特開平06-083630号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
データ型は整数型と文字型とに大別される。これらのデータ型は固定長であることが普通であり、各データ型は規定のデータ長を有する。利便性という観点から、格納されうる電子データサイズに対して充分に大きな格納サイズのデータ型を選択する運用が、習慣的に行われてきた。この点に関し、本願発明者は、鋭意研究の過程で新規なデータ構造の着想を得た。
【0005】
本発明は、有効桁数に合わせた表現が可能である新規なデータ構造、並びにこれを取り扱うことのできる情報処理装置、プログラム、及び情報処理方法を提供する。
【課題を解決するための手段】
【0006】
本発明によれば、以下の発明が提供される。
[1]第1変換部を備える情報処理装置であって、前記第1変換部は、記録部分生成部と、個数指定部分生成部と、結合部とを備え、前記記録部分生成部は、整数型、小数型及び文字型を含む既知のデータ型を有する第1電子データのビット列から、第1所定ビット長の単位データを順次抽出することで、一つ以上の前記単位データで構成された記録部分を生成し、前記個数指定部分生成部は、前記記録部分の前記単位データの個数を個数指定値としてカウントし、当該個数指定値の情報を含むとともに当該個数指定値に応じた可変長の個数指定部分を生成し、前記結合部は、前記記録部分生成部が生成した前記記録部分と前記個数指定部分生成部が生成した前記個数指定部分とを結合して前記記録部分と前記個数指定部分とを有する第2電子データを生成する、情報処理装置。
[2][1]に記載の情報処理装置であって、前記個数指定部分生成部は、前記個数指定部分から前記個数指定値のビット長が取得可能となるよう、下記(1)又は(2)の構成を備える、情報処理装置。
(1)前記個数指定部分の先頭に、前記個数指定値のビット長を示す第2所定ビット長の個数指定値指定部分を配置する。
(2)前記個数指定値のビット列を、第3所定ビット長を有するとともに継続フラグによって後続の有無を判別可能な一つ以上の分割部分に分割する。
[3][1]に記載の情報処理装置であって、前記第2電子データは、前記第1電子データと相互に変換可能である、情報処理装置。
[4][1]~[3]のいずれかに記載の情報処理装置であって、前記第1変換部は、前記第1電子データのビット列のうち値を格納しない不使用部分を省いて前記記録部分を生成することにより、データ長が短縮された前記第2電子データを生成する、情報処理装置。
[5][1]~[4]のいずれかに記載の情報処理装置であって、前記第1変換部は、識別部分生成部をさらに備え、前記識別部分生成部は、前記第1電子データのデータ型を取得し、当該データ型に対応する識別値の情報を含む識別部分を生成し、前記結合部は、前記個数指定部分及び前記記録部分に加えて前記識別部分を結合して、前記個数指定部分と前記記録部分と前記識別部分とを有する前記第2電子データを生成する、情報処理装置。
[6][1]~[5]のいずれかに記載の情報処理装置であって、第2変換部をさらに備え、前記第2変換部は、個数指定値取得部と、単位データ合算部とを備え、前記個数指定値取得部は、前記第2電子データの前記個数指定部分から前記個数指定値を取得し、前記単位データ合算部は、前記個数指定値取得部が取得した前記個数指定値に基づいて前記第1所定ビット長の単位で桁をずらしながら前記記録部分に含まれる前記単位データを順次合算することで、前記第1電子データを生成する、情報処理装置。
【0007】
[7]第2変換部を備える情報処理装置であって、前記第2変換部は、記録部分と個数指定部分とを有する第2電子データを、整数型、小数型及び文字型を含む既知のデータ型を有する第1電子データに変換するよう構成されるとともに、個数指定部分ビット長取得部と、個数指定値取得部と、単位データ合算部と、を備え、前記記録部分は、第1所定ビット長を有する一つ以上の単位データで構成され、前記個数指定部分は、前記単位データの個数を示す個数指定値の情報を含むとともに、当該個数指定値に応じて可変長とされ、前記個数指定部分ビット長取得部は、前記個数指定部分のビット長を取得し、前記個数指定値取得部は、前記個数指定部分ビット長取得部が取得した前記個数指定部分のビット長に基づいて前記個数指定部分から前記個数指定値を取得し、前記単位データ合算部は、前記個数指定値取得部が取得した前記個数指定値に基づいて前記第1所定ビット長の単位で桁をずらしながら前記記録部分に含まれる前記単位データを順次合算することで、前記第1電子データを生成する、情報処理装置。
[8]コンピュータに、整数型、小数型及び文字型を含む既知のデータ型を有する第1電子データのビット列から、第1所定ビット長の単位データを順次抽出させることで、一つ以上の前記単位データで構成された記録部分を生成させ、コンピュータに、前記記録部分の前記単位データの個数を個数指定値としてカウントさせ、当該個数指定値の情報を含むとともに当該個数指定値に応じた可変長の個数指定部分を生成させ、コンピュータに、前記記録部分と前記個数指定部分とを結合させて、前記記録部分と前記個数指定部分とを有する第2電子データを生成させる、プログラム。
[9]コンピュータにより、整数型、小数型及び文字型を含む既知のデータ型を有する第1電子データのビット列から、第1所定ビット長の単位データを順次抽出することで、一つ以上の前記単位データで構成された記録部分を生成し、コンピュータにより、前記記録部分の前記単位データの個数を個数指定値としてカウントし、当該個数指定値の情報を含むとともに当該個数指定値に応じた可変長の個数指定部分を生成し、コンピュータにより、前記記録部分と前記個数指定部分とを結合して、前記記録部分と前記個数指定部分とを有する第2電子データを生成する、情報処理方法。
【0008】
[10]第1変換部を備える情報処理装置であって、前記第1変換部は、記録部分生成部と、個数指定部分生成部と、識別部分生成部と、結合部とを備え、前記記録部分生成部は、整数型、小数型及び文字型を含む既知のデータ型を有する第1電子データのビット列から、第1所定ビット長の単位データを順次抽出することで、一つ以上の前記単位データで構成された記録部分を生成し、前記個数指定部分生成部は、前記記録部分の前記単位データの個数を個数指定値としてカウントし、当該個数指定値の情報を含む個数指定部分を生成し、前記識別部分生成部は、前記第1電子データのデータ型を取得し、当該データ型に対応する識別値の情報を含む識別部分を生成し、前記結合部は、前記記録部分生成部が生成した前記記録部分と前記個数指定部分生成部が生成した前記個数指定部分と前記識別部分生成部が生成した前記識別部分とを結合して、前記記録部分と前記個数指定部分と前記識別部分とを有する第2電子データを生成する、情報処理装置。
[11]第2変換部を備える情報処理装置であって、前記第2変換部は、記録部分と個数指定部分と識別部分とを有する第2電子データを、整数型、小数型及び文字型を含む既知のデータ型を有する第1電子データに変換するよう構成されるとともに、個数指定値取得部と、単位データ合算部と、識別部とを備え、前記記録部分は、第1所定ビット長を有する一つ以上の単位データで構成され、前記個数指定部分は、前記単位データの個数を示す個数指定値の情報を含み、前記識別部分は、前記第2電子データの変換元である前記第1電子データのデータ型に対応する識別値の情報を含み、前記個数指定値取得部は、前記個数指定部分から前記個数指定値を取得し、前記識別部は、前記識別部分から前記識別値を取得して当該識別値から前記第1電子データのデータ型を識別し、前記単位データ合算部は、前記個数指定値取得部が取得した前記個数指定値に基づいて前記第1所定ビット長の単位で桁をずらしながら前記記録部分に含まれる前記単位データを順次合算することで、前記識別部が識別した前記データ型を有する前記第1電子データを生成する、情報処理装置。
[12]コンピュータに、整数型、小数型及び文字型を含む既知のデータ型を有する第1電子データのビット列から、所定の単位ビット列又は所定の単位バイト列を単位データとして順次抽出させることで、一つ以上の前記単位データで構成された記録部分を生成させ、コンピュータに、前記記録部分の前記単位データの個数を個数指定値としてカウントさせ、当該個数指定値の情報を含む個数指定部分を生成させ、コンピュータに、前記第1電子データのデータ型を取得させ、当該データ型に対応する識別値の情報を含む識別部分を生成させ、コンピュータに、前記記録部分と前記個数指定部分と前記識別部分とを結合させて、前記記録部分と前記個数指定部分と前記識別部分とを有する第2電子データを生成させる、プログラム。
[13]コンピュータに、記録部分と個数指定部分と識別部分とを有する第2電子データを整数型、小数型及び文字型を含む既知のデータ型を有する第1電子データに変換させるプログラムであって、前記記録部分は、第1所定ビット長を有する一つ以上の単位データで構成され、前記個数指定部分は、前記単位データの個数を示す個数指定値の情報を含み、前記識別部分は、前記第2電子データの変換元である前記第1電子データのデータ型に対応する識別値の情報を含み、コンピュータに、前記第2電子データの前記個数指定部分から前記個数指定値を取得させ、コンピュータに、前記第2電子データの前記識別部分から前記識別値を取得させて当該識別値から前記第1電子データのデータ型を識別させ、コンピュータに、前記個数指定値に基づいて前記第1所定ビット長の単位で桁をずらしながら前記記録部分に含まれる前記単位データを順次合算させることで、前記識別させたデータ型を有する前記第1電子データを生成させる、プログラム。
[14]コンピュータにより、整数型、小数型及び文字型を含む既知のデータ型を有する第1電子データのビット列から、第1所定ビット長の単位データを順次抽出することで、一つ以上の前記単位データで構成された記録部分を生成し、コンピュータにより、前記記録部分の前記単位データの個数を個数指定値としてカウントし、当該個数指定値の情報を含む個数指定部分を生成し、コンピュータにより、前記第1電子データのデータ型を取得し、当該データ型に対応する識別値の情報を含む識別部分を生成し、コンピュータにより、前記記録部分と前記個数指定部分と前記識別部分とを結合して、前記記録部分と前記個数指定部分と前記識別部分とを有する第2電子データを生成する、情報処理方法。
[15]コンピュータにより、記録部分と個数指定部分と識別部分とを持つ第2電子データを整数型、小数型及び文字型を含む既知のデータ型を有する第1電子データに変換する方法であって、前記記録部分は、所定の単位ビット列又は所定の単位バイト列からなる第1所定ビット長を有する一つ以上の単位データで構成され、前記個数指定部分は、前記単位データの個数を示す個数指定値の情報を含み、前記識別部分は、前記第2電子データの変換元である前記第1電子データのデータ型に対応する識別値の情報を含み、コンピュータにより、前記第2電子データの前記個数指定部分から前記個数指定値を取得し、コンピュータにより、前記第2電子データの前記識別部分から前記識別値を取得して当該識別値から前記第1電子データのデータ型を識別し、コンピュータにより、前記個数指定値に基づいて前記第1所定ビット長の単位で桁をずらしながら前記記録部分に含まれる前記単位データを順次合算することで、前記識別したデータ型を有する前記第1電子データを生成する、情報処理方法。
[16]記録部分と個数指定部分と識別部分とを備えるデータ構造であって、前記記録部分は、所定の単位ビット列又は所定の単位バイト列からなる第1所定ビット長を有する1つ以上の単位データで構成され、前記個数指定部分は、前記単位データの個数を示す個数指定値の情報を含み、前記識別部分は、整数型、小数型及び文字型を含む既知のデータ型に対応する識別値の情報を含む、データ構造。
データ構造。
【0009】
本発明にかかる第2電子データは個数指定部分の値で記録部分のデータ長を可変指定できるので、有効桁数に合わせた表現が可能となる利点がある。
【図面の簡単な説明】
【0010】
図1図1Aは実施形態のκ(カッパ)型データ構造を持つ第2電子データ5の模式図であり、図1Bはκ型の一例(整数型・個数指定部分固定型)の第2電子データ5を示す模式図であり、図1Cは第2電子データ5の具体的数値例を示す図であり、図1Dは第2電子データ5の他の具体的数値例を示す図である。
図2図2Aはκ型の他の例(整数型・個数指定部分固定型)の第2電子データ5の他の具体例を示す図であり、図2Bは単位データ5aの例を示す図である。
図3図3Aはκ型の他の例(整数型・個数指定部分可変長型)を表す模式図であり、図3Bはκ型の他の例の第2電子データ5の具体的数値例の図である。
図4図4Aはκ型の他の例(小数型・個数指定部分可変長型)の第2電子データ5を表す模式図であり、図4Bはκ型の他の例(小数型・個数指定部分可変長型・指数部分と仮数部分の両方指定可)の第2電子データ5を表す模式図であり、図4Cはκ型の他の例(小数型・個数指定部分可変長型)の第2電子データ5を表す模式図であり、図4Dはsignビットとbiased exponentの概念図である。
図5図5Aはκ型の他の例(文字型・個数指定部分固定型)の第2電子データ5を表す模式図であり、図5Bはκ型の他の例(文字型・個数指定部分可変長型)の第2電子データ5を表す模式図である。
図6図6Aは識別部分を持つ第2電子データ5の一例であり、図6Bは識別部分の数値と意味との対応テーブルの一例である。
図7】実施形態に係る通信回線2を介して電子データ(第1電子データ4又は第2電子データ5)を授受する情報処理装置1(1a、1b、1c)を示す図である。
図8図8Aは情報処理装置1のハードウェア構成を示すブロック図であり、図8Bは情報処理装置1が持つ演算処理部11の機能構成を示すブロック図である。
図9図9Aは第1電子データ4(数値型または文字型)から第2電子データ5(κ型文字列)への変換の流れを示し、図9B図9Aと逆の変換の流れを示す。
図10】第1電子データ4から第2電子データ5への変換処理の具体例を示す図である。
図11】第1変換部20によって、個数指定部分のビット列を継続フラグによって接続される一つ以上の分割部分に分割する処理の概念を示す図である。
図12図11と同様、個数指定部分のビット列を継続フラグによって接続される一つ以上の分割部分に分割する処理の具体例を示す図である。
図13図11と同様、個数指定部分のビット列を継続フラグによって接続される一つ以上の分割部分に分割する処理の概念を示す図である。
図14図11と同様、個数指定部分のビット列を継続フラグによって接続される一つ以上の分割部分に分割する処理の具体例を示す図である。
【発明を実施するための形態】
【0011】
以下、本発明の実施形態について説明する。以下に示す実施形態中で示した各種特徴事項は、互いに組み合わせ可能である。また、各特徴事項について独立して発明が成立する。
【0012】
以下、便宜上の区別のために、実施の形態のデータ構造を「κ(カッパ)型」と称する。κ型のデータ構造は、有効桁を用いるデータ表現形式を備える。まず図1A図6Bを参照して、κ型のデータ構造を持つ第2電子データ5の例を説明する。次に図7図10を用いて第2電子データ5を取り扱う情報処理装置1等について説明する。さらに図9図10等を用いて、既存データ型の第1電子データ4と第2電子データ5との変換処理の具体例を述べる。
【0013】
なお、既存データ型を「第1データ型」と称する場合、便宜上の対比で、κ型を「第2データ型」と称することがある。なお以下の説明で単に「ビット列」と述べる場合、説明中でビットとバイトとを厳密に区別していない限りは、多くの場合、広義のビット列を意味している。広義のビット列は、「任意の数のビットで構成されたデータ集合」と「任意の数のバイトで構成されたデータ集合」とを包括する概念を表している。
【0014】
<1.実施形態のデータ構造>
(1.1.概要)
図1Aに、κ型のデータ構造を持つ第2電子データ5を示す。κ型のデータ構造は、「個数指定部分」と「記録部分」とを持つ。個数指定部分は、格納データの幅を指定する部分である。記録部分は、第2電子データ5の主情報(データ本体)が記録されている部分である。個数指定部分は、個数指定値を格納する。個数指定値は、記録部分が何個の「単位データ5a」で構成されているかを指定する値である。実施の形態では、一例として、第2電子データ5におけるビット列全体のうち先等の幾つかが個数指定部分に使用され、個数指定部分の直後に記録部分が並ぶものとする。
【0015】
記録部分は、一つ以上の単位データ5aで構成される。実施の形態の単位データ5aは、所定個数のビット又はバイトで構成されたひとまとまりのデータ片であり、「単位ビット列」や「単位バイト列」とも表現できる。第1所定ビット長としての「単位データ長」は予め設定される。実施の形態では単位データ長(第1所定ビット長)が1バイト(つまり8ビット)である例を説明する。この場合、例えば個数指定部分の値が「3」であれば、記録部分は3×1バイト=3バイト長(つまり24ビット長)である。
【0016】
単位データ5aは1バイト長に限定されず、予め任意のデータ長(任意のビット長またはバイト長)に設定してもよい。一例として、単位データ5aは2バイトでもよく、この場合には個数指定部分の個数指定値が「2」であれば記録部分は2×2バイト=4バイト長に指定される。他の例として、単数または任意の複数のビット単位としてもよい。例えば単位データ5aを4ビット長にしてもよく、この場合には個数指定部分の個数指定値が「5」であれば記録部分は5×4ビット=20ビット長に指定される。単位データ5aの他の変形例は後ほど図1Dでも述べる。
【0017】
個数指定部分は、単位データ5aにとらわれずに任意の単数/複数のビット又はバイトで構成されてもよい。ただしこれに限定されず、記録部分と同様に、個数指定部分も単位データ5aを用いた格納方式が適用されてもよい。
【0018】
実施の形態における他の前提事項を述べると、以下の説明で接頭辞「0x」は16進数表記を意味する。また、本説明では、バイトの並び方については原則としてbig endianを前提に説明を行うが、これは一例に過ぎず、他の例として例えばlittle endian等のバイトの並び方が採用されてもよい。また、以下の説明に置いて、整数型、小数型、文字型とは、記憶領域での型名であり、表現型を示すものではない。たとえば、日付型は、「年/月/日」等の表現型だが、記憶領域では整数型である。また、「^(ハット)」は冪数を意味し、「~」は省略を意味する。
【0019】
下記の表1は、κ型のバリエーションの幾つかを示す(区別のためκ1~κ12のナンバリングを付す)。κ型のバリエーションを規定する要素には、一例として「個数指定部分の固定/可変長の別」と「記録部分のデータ内容」と「識別部分の有無」とが含まれる。例えばκ1型は、「整数型・個数指定部分固定型」である。
【0020】
【表1】
【0021】
(1.2.整数型:κ1型、κ2型)
(1.2.1.個数指定部分固定型:κ1型)
図1Bの例では、「A」が個数指定部分であり、記録部分に「abcde」が格納される。実施の形態では一例として個数指定部分が1バイトであり、記録部分の単位データ5aが1バイトずつ合計5個であり、図1Bの例は第2電子データ5が合計6バイトである。
【0022】
図1Bでは、個数指定部分と記録部分の一つ一つの四角が1バイト(単位データ5aと同じ)を表していて、これは後述する幾つかの図で共通に適用される。ただし、他の幾つかの図(具体的には図4A図4C図5A図5B)では、図示の簡略化のために、図中の四角の個数とデータ長とが相違することがある。
【0023】
図1Cの具体例では、個数指定部分の値が「03」(16進数表記)であり、記録部分が3バイト長である。記録部分の個々のバイトに「01」と「02」と「03」とが格納されている(16進数表記)。つまり記録部分全体の格納値は(0x010203)である。この値は10進数では66,051である。
【0024】
図1Dの例では、個数指定部分の値が「05」であり、記録部分が5バイト長である。記録部分の各単位データ5aに「01」と「02」と「03」と「04」と「05」とが格納されている(ただし16進数表記)。つまり、記録部分に(0x0102030405)が格納されている(10進数では4,328,719,365)。例えば同じ値をlong型のデータ型で格納する場合、long型の規定データ長は8バイトである。これに対して、κ型では6バイト(個数指定部分1バイト+記録部分5バイト=合計6バイト)で同じ情報を格納できる利点がある。
【0025】
なお、unsignedの最大値は図2Aにも記載するとおりであり、「256255-1(≒1.2×10614)」を誤差なく記録できる。signedでの範囲は、「-1×(256255-1)÷2」から「256255÷2-1」となる。
【0026】
単位データ5aには各種変形が可能である。単位データ5aのサイズ(第1所定ビット長、つまり単位データ長)の変形例を述べる。単位データ5aは図2Bの第1形式と第2形式の何れでもよい。第1形式は2バイト単位であり、第1形式の方がプログラミングは容易である。第2形式は1バイト単位であり、第2形式の方が格納容量を減らせる利点がある。単位データ5aの更に他の形式として、3バイト単位以上(3段階以上)の形式としてもよい。他の例として、単位データ5aのデータ長は、バイト単位に限定されず、任意のビット長(つまり1ビット、2ビット・・・又は7ビット以上の任意のビット長)に規定されてもよい。
【0027】
(1.2.2.個数指定部分可変長型:κ2型)
個数指定部分は、固定長に限られない。個数指定部分を可変長とすることもできる。図3Aの例の場合、個数指定部分が、個数指定値指定部分としての第1部分と、第2部分とで構成されている。第1部分は、個数指定部分のうち第2部分のデータ長(ビット長)を指定する部分である。第1部分は、個数指定部分の所定の位置に配置され、予め設定された第2所定ビット長を有している。なお、所定の位置とは、例えば個数指定部分の先頭である。ただし、先頭に対する位置が決まっていれば、他の位置に配置されていても良い。図3Aの例では第1部分に「α」が格納されている。一方、第2部分は、記録部分のデータ長(ビット長)を指定する個数指定値を格納する。第2部分には「ABC~」が格納されている。図3Aの第2電子データ5を受け取った場合には、第1部分の「α」に従って、αバイト長の第2部分の値「ABC~」を読み取る。第2部分に格納された「ABC~」が個数指定値である。個数指定値は、記録部分を構成する単位データ5aの個数を表している。個数指定部分の後に続くビット列のうちABC~バイトを記録部分として取り扱うことで、記録部分の「abc~」という情報を正しく読み取ることができる。
【0028】
図3Bの例では、個数指定部分の第1部分に「02」が格納されており、個数指定部分の第2部分が2バイト長であることが特定される。第2部分には258(=0x0102)が格納されており、これが記録部分のデータ長である。記録部分には、数値「01」「02」「03」「04」「~」「02」が格納されている。つまり、0x01020304~02(≒2.1×10621)が記録部分に格納されている。unsignedの最大値は、「(256255-1)^(256255-1)(≒(10614614)」を誤差なく記録できる。
【0029】
(1.3.小数型:κ3型、κ4型)
(1.3.1.個数指定部分固定型:κ3型)
次に、記録部分に小数型の情報を格納する例を説明する。なお、α、β、Δ、ε等は任意の16進数値であるものとする。図4Aの例では、個数指定部分の値「α」は記録部分の幅(αバイト)を指定する。記録部分の先頭の単位データ5aは「A」を格納していて、この「A」が指数部分であり、続く「abc~」が仮数部分である。規格IEEE754-1985と同様で、signビットとbiased exponentとを持つ形式としてもよい。仮数部分の最大有効桁数は、「1÷(256255-1)(≒1÷(1.2×10614))」である。
【0030】
図4Bの例では、個数指定部分が第3部分と第4部分とで構成される(この第3,第4は前述の第1部分、第2部分との区別のための表記である)。第3部分の格納値「α」は、記録部分のうち「指数部分」のバイト長を指定する。第4部分の格納値「β」は、記録部分のうち「仮数部分」のバイト長を指定する。記録部分のなかの指数部分は、αバイトのデータ長を持ち、その内部に「A~」という値を格納している。記録部分のなかの仮数部分は、βバイトのデータ長を持ち、その内部に「abc~」という値を格納している。なお「A」は、図4Aと同様に、sign ビットと、biased exponentの形式とする。
【0031】
(1.3.2.個数指定部分可変長型:κ4型)
図4Cの例では、個数指定部分が、第5部分と第6部分と第7部分と第8部分とで構成される(この第5~第8は前述の第1~第4部分との区別のための表記である)。第5部分の「α」は第7部分のバイト長を指定し、第6部分の「β」は第8部分のバイト長を指定する。第7部分の値「Δ~」は、記録部分における「指数部分」のバイト長を指定する。第8部分の値「ε~」は、記録部分における「仮数部分」のバイト長を指定する。記録部分のビット列のうち先頭から「Δ~」バイトが、指数部分であり、その値は「A~」である。記録部分のビット列のうち指数部分の後に続く「ε~」バイトが、仮数部分であり、その値は「B~」である。なお「A~」は、図4Aと同様で、sign ビットと、biased exponentの形式とする。仮数部分の最大有効桁数は、「1÷((256255-1)^(256255-1))」であるものとする。
【0032】
なお、図4Dに、signビットと、biased exponentの概念を記す。これは、文献「Decimal Arithmetic Specification The Arithmetic Model、"http://speleotrove.com/decimal/damodel.html"」および文献「The decNumber C library p.30、"http://speleotrove.com/decimal/
decnumber.pdf"IEEE 754-1985」に準拠している。
【0033】
(1.4.文字型:κ5型、κ6型)
(1.4.1.個数指定部分固定型:κ5型)
表現型の文字列には、wchar型やマルチバイト型等がある。wchar型や、たとえば、Microsoft(登録商標)のc言語の「char8_t型」「char16_t型」「char32_t型」があるが、記憶領域では全て「char型」である。以下、「文字型」はchar型であるものとして説明を行う。
【0034】
図5Aの例では、個数指定部分の値「α」は記録部分の幅を示し、「abc~」は格納する文字情報(char型)である。この文字情報は具体的には文字コードである。通常、文字コードは数値によって規定され、各々の文字コードが文字(キャラクタ)と予め紐付けられる。なお最大文字数は、「255」である。
【0035】
(1.4.2.個数指定部分可変長型:κ6型)
図5Bの例では、個数指定部分における第1部分「α」は、第2部分のバイト長(つまり文字部幅)を指定する。第2部分の値「β~」は記録部分のバイト長を指定する。記録部分の値「abc~」が、格納される文字情報(char型)である。最大文字数は、「256255-1(≒1.2×10614)」である。
【0036】
(1.5.識別部分付きκ型:κ7型~:κ12型)
図6Aに示すように、「識別部分」が追加されてもよい。識別部分は、第2電子データ5の変換元である前記第1電子データ4のデータ型に対応する、予め設定された識別値を格納している。情報処理装置1の識別部33は、識別値に基づいて第2電子データ5のデータ構造種別を判別する。なお図6Aでは識別部分と個数指定部分と記録部分がこの順に並んでいるが、これは一例であり、他の並び順としてもよい。図6Aの例では識別部分と個数指定部分とがそれぞれ1バイト以上のデータ長を持ち、記録部分は個数指定値で指定されるデータ長を持つ。個数指定部分と記録部分との具体的内容には、図1A図5Bで述べたκ1型~κ6型を任意に適用することができる。
【0037】
図6Bは、識別部分の値を例示したものである。図6Bは一例であり、例えば整数型・小数型であれば、signビットを含むこともある。
【0038】
以上説明した「κ型」というデータ構造は、既存データ型と同等レベルでの取り扱いが可能な新規なデータ表現形式である。κ型では、個数指定部分の値で記録部分のデータ長を可変指定することができる。これにより記録部分で格納した電子情報の桁数を任意に指定することができ、有効桁数に合わせた表現が可能となる利点がある。
【0039】
後述する変換処理により、κ型と他の既存データ型との間で、データ型を相互変換することができる。他の既存データ型は、一例として、char型やint型やshort型やlong型やlong-long型やfloat型やdouble型やlong-double型などでもよい。int型の種類は、int8_tやint16_tやint32_tやint64_tなどでもよい。
【0040】
κ型データ構造は、データ圧縮やデータ変換等の目的でアプリケーションプログラム上で使用されてもよく、κ型データ構造で記憶装置への書込、読出および保存が可能とされてもよい。ただしこれに限られず、例えばプログラム中(具体的にはソースコード中等)で宣言(つまりデータ型指定)が可能となるように、各種プログラムのデータ型の一つにκ型が加えられてもよい。なお、κ型データ構造には、次の利点もある。従来技術の多くは高速化等の処理を考慮した演算プログラムを必要とするので、ライブラリ一式でしか導入できない。この点、κ型の利用にはライブラリ一式の導入が不要なので、ライブラリ関連のプログラムも不要となり、記憶容量を節約できる利点がある。
【0041】
(1.6.比較例)
既存の高級プログラム言語におけるデータ型は、数値型と文字型とに大別される。具体的には、例えば「char」又は「short・integer・long」と、「signed・unsigned」との組み合わせによるデータ型の値(格納領域)に、電子情報が格納される。宣言されたデータ型の幅分(データ長)の格納容量が必要である。
【0042】
有効桁の面から、より大きな幅(データ長)のデータ型が習慣的に使用される。格納情報のデータ長に比べて使用データ型のデータ長が大きければ、不使用部分つまり無駄が生じる。例えば、エポック秒形式では多くのC言語で8バイトが割り当てられるものの、「2106年02月07日06:28:15」までは4バイトが有効であるにすぎず、残り4バイトの無駄(不使用部分)が生じる。同様に、「36812年02月20日00:36:15」までは5バイトで表現できるので、この場合も3バイトの無駄が生じる。なおエポック秒の俗称は「UNIX(登録商標)秒」である。
【0043】
この点、実施の形態のκ型データ構造によれば、有効桁数に合わせた表現が可能となる。例えば上記エポック秒形式の「2106年02月07日06:28:15」では、有効な4バイトを記録部分に格納し、さらに個数指定部分を1バイト設ければ、合計5バイト長で同じ情報を記憶することが可能となる。κ型により記憶領域の節約が可能となる利点がある。その一方で、κ型によれば、記憶情報が増加した場合(つまり4バイトから5バイトに増加した場合)でも、個数指定部分の値を増加することでデータ長を任意に拡張できる利点もある。無駄を抑制しつつ有効数値を適切に表現できる。
【0044】
<2.実施の形態の装置構成>
(2.1.情報処理装置1の概要)
図7に例示する情報処理装置1は、第2電子データ5を取り扱うことができるように構築される。一例として3つの情報処理装置1a、1b、1cを挙げる。情報処理装置1aはクラウドサーバ1aであり、情報処理装置1bはすなわち組込デバイス1bの内部情報処理装置であり、情報処理装置1cはすなわち宇宙機1cの内部情報処理装置である。情報処理装置1a、1b、1cは、通信回線2を介して互いに通信することで、互いに電子情報をやり取りする。電子情報は、第1電子データ4を含む電子ファイルや、第2電子データ5を含む電子ファイルである。
【0045】
図8Aに示すように、情報処理装置1は、演算処理部11と主記憶部12と補助記憶部13と通信部14とを備えている。これらの演算処理部11等は、システムバス17を介して相互に電気的に接続される。
【0046】
演算処理部11は、例えば、CPU、マイクロプロセッサ、DSP等であり、情報処理装置1の全体の動作を制御する。主記憶部12は、例えば、RAMやDRAM等で構成される。主記憶部12は、演算処理部11による各種プログラムの実行時のワークエリア等として用いられる。補助記憶部13は、ROM等の不揮発性メモリ、またはHDDやSSD等の大容量ストレージである。補助記憶部13は、文字、数値、音声、画像等の各種データを保存したり、演算処理部11の処理に利用されるプログラム等を保存したりする。
【0047】
補助記憶部13に記憶されるプログラムは、例えば、情報処理装置1の基本的な機能を実現するためのOS、各種ハードウェア制御するためのドライバ、電子メールやウェブブラウジング、その他各種機能を実現するためのプログラム等である。また、補助記憶部13には、音声データ、または動画データ等を再生するためのアプリケーションソフトウェアが予め記憶されていてもよい。
【0048】
通信部14は、通信回線2と接続することで、他のハードウェア資源等との間で各種データの送受信を行う。通信回線2は無線又は有線或いはそれらの組合せから成る。
【0049】
さらに、情報処理装置1は、操作入力部15とモニタ16とを備えていてもよい。操作入力部15は、各種操作の入力を受け付ける任意の入力デバイスであり、具体的には操作ボタン、タッチパネル、或いはキーボード及びマウス等でもよい。モニタ16は、各種画像を表示する例えば液晶ディスプレイ装置等である。なお自動操縦型の組込デバイス1b等に実装される情報処理装置1では、操作入力部15とモニタ16とが省略されてもよい。
【0050】
(2.2.演算処理部11の機能構成)
図8Bに示すように、演算処理部11は、第1変換部20と、第2変換部30とを備える。実施の形態では、一例として情報処理装置1a~1cそれぞれが図8Bの機能構成を備える。第1変換部20は、第1電子データ4を第2電子データ5に変換する。第2変換部30は、第2電子データ5を第1電子データ4に変換する。
【0051】
第1電子データ4は第1データ型を持つ電子データであり、第1データ型は任意の既存データ型(整数型、小数型及び文字型を含む既知のデータ型)であるものとする。第1データ型は、C言語等であれば例えばchar,short,long等でもよい。これらの各々の既存データ型のデータ長は、予め固定長に規定されるのが普通である。第1電子データ4は、第2電子データ5の「個数指定部分」を有さない。
【0052】
第1変換部20は、第1電子データ4から、κ型データ構造における記録部分を生成する。記録部分の生成は、第1電子データ4のビット列(前述した広義のビット列)から、単位ビット列又は単位バイト列を単位データ5aとして順次抽出することにより行われる。第1変換部20は、記録部分が含む単位データ5aの個数を個数指定値に設定し、この個数指定値を個数指定部分に格納する。第1変換部20は、個数指定部分と記録部分とを結合させて、第2電子データ5を出力する。結合は、例えば個数指定部分と記録部分とを連結させたひとまとまりのビット列を生成することである。
【0053】
より具体的には、第1変換部20は、図8Bに示すように、記録部分生成部21と、個数指定部分生成部22と、識別部分生成部23と、結合部24とを備える。ただし、個数指定部分生成部22と識別部分生成部23とは、少なくとも一方を備えていれば良い。
【0054】
記録部分生成部21は、上述した既知のデータ型を有する第1電子データ4のビット列から、第1所定ビット長の単位データ5aを順次抽出することで、一つ以上の前記単位データで構成された記録部分を生成する。第1所定ビット長の単位データ5aを順次抽出するには、例えば、シフト演算が用いられる。
【0055】
個数指定部分生成部22は、記録部分の単位データ5aの個数を個数指定値としてカウントし、当該個数指定値の情報を含む個数指定部分を生成する。個数指定部分生成部22は、具体的には、記録部分生成部21が単位データ5aを順次生成する際のループ回数(例えば、後述するソースコード例1では、右シフト演算のループ回数)をカウントすることで、個数指定値を得ることができる。個数指定部分は、固定長である場合(表1に示すκ1型、κ3型、κ5型、κ7型、κ9型、κ11型の場合)と、可変長である場合(表1に示すκ2型、κ4型、κ6型、κ8型、κ10型、κ12型の場合)がある。個数指定部分が可変長である場合の、具体的な個数指定部分の生成処理については、後述する。
【0056】
識別部分生成部23は、第1電子データ4のデータ型を取得し、当該データ型に対応する識別値の情報を含む識別部分を生成する。第1電子データ4のデータ型は、ユーザから与えられたものを取得してもよく、既知の関数を用いて取得しても良い。
【0057】
なお、識別部分を有さない第2電子データ5を生成する場合(表1に示すκ1型~κ6型の場合)は、識別部分生成部23を備えている必要はない。
【0058】
結合部24は、記録部分生成部21が生成した記録部分と、個数指定部分生成部22が生成した個数指定部分と、識別部分生成部23が生成した識別部分とを結合して、記録部分と個数指定部分と識別部分とを有する第2電子データ5を生成する。
【0059】
一方、第2変換部30は、個数指定部分と記録部分を持つ第2電子データ5を受け取ると、「個数指定部分に格納された個数指定値」に基づいて記録部分のデータ長を特定する。記録部分のデータ長は、単位データ長と個数指定値とに基づいて決まる。第2変換部30は、単位データ5aの各値を、個数指定値に基づいて単位データ長の単位で桁をずらしながら順次合算する。κ型データ構造に応じて予め定められた所定規則に従って順次合算を行うことで、第2変換部30は、個数指定部分を有さない第1電子データ4を生成することができる。
【0060】
より具体的には、第2変換部30は、図8Bに示すように、個数指定値取得部31と、単位データ合算部32と、識別部33と、個数指定部分ビット長取得部34とを備える。ただし、識別部33と個数指定部分ビット長取得部34とは、少なくとも一方を備えていれば良い。
【0061】
個数指定値取得部31は、第2電子データ5の個数指定部分から、個数指定値を取得する。この際、個数指定部分が可変長である場合(表1に示すκ2型、κ4型、κ6型、κ8型、κ10型、κ12型の場合)は、個数指定部分ビット長取得部34が取得した個数指定部分のビット長に基づいて、個数指定値を読み出す。
【0062】
単位データ合算部32は、個数指定値取得部31が取得した個数指定値に基づいて、記録部分を第1所定ビット長の単位で桁をずらしながら記録部分に含まれる前記単位データを順次合算することで、第1電子データ4を生成する。
【0063】
識別部33は、前述した識別部分を持つ第2電子データ5を取り扱う場合に作動する機能部である。識別部33は、識別部分の値に基づいて第2電子データ5のデータ構造種別を識別する。一例として、図6Bのテーブルが補助記憶部13に記憶されてもよく、演算処理部11が当該テーブルを参照することでデータ構造を識別してもよい。
【0064】
個数指定部分ビット長取得部34は、個数指定部分が可変長である場合(表1に示すκ2型、κ4型、κ6型、κ8型、κ10型、κ12型の場合)に、当該個数指定部分のビット長を取得する。具体的には、個数指定部分ビット長取得部34は、個数指定部分に含まれる第1部分(個数指定値指定部分)又は継続フラグ(後述)の情報に基づいて、個数指定部分のビット長を判別する。
【0065】
以上のような第1変換部20及び第2変換部30により、第1電子データ4と第2電子データ5とは相互に変換可能となっている。
【0066】
図7を参照して、実施の形態の情報処理装置1の運用場面をいくつか例示する。
【0067】
一例として、組込デバイス1bや宇宙機1cにおいて、各々の補助記憶部13に様々な電子情報が蓄積されていくものとする。一例として、組込デバイス1bが、例えば物理センサ値等の物理量パラメータ値(温度、圧力、光、流量等)を電子データとして蓄積してもよく、あるいは位置センサ値や速度センサ値等に基づく機械的パラメータ値を電子データとして蓄積してもよい。これらのセンサ値等は取得時刻とセットで記録されてもよく、これにより経時的変化等が記録されてもよい。
【0068】
組込デバイス1bや宇宙機1cの内部の第1変換部20が、種々の電子情報を、第2電子データ5の形態で補助記憶部13に格納していく。所定のタイミングで、組込デバイス1bや宇宙機1cが、蓄積した第2電子データ5をクラウドサーバ1aに向けて送信する。通信回線2を介してクラウドサーバ1aが第2電子データ5を受け取ると、クラウドサーバ1aの第2変換部30は、第2電子データ5を第1電子データ4に変換する。クラウドサーバ1aは、第1電子データ4を格納するとともに、第1データ型に対応する各種既存プログラムを用いて第1電子データ4に対して各種の演算又は加工等を行うことができる。
【0069】
上記の例では、組込デバイス1bや宇宙機1cのメモリ資源を節約できる利点がある。使用場面の一例として、組込デバイス1bや宇宙機1cが既に第1電子データ4で内部演算処理を実行するように構築されている場合に、第1変換部20の実行プログラムが事後的に導入されてもよい。事後的に導入された第1変換部20が、補助記憶部13内のデータを第1電子データ4から第2電子データ5に順次変換してもよい。変換処理において、第1電子データ4のビット列のうち値を持たない不使用部分を省くことで、第2電子データ5を短縮化(圧縮)してもよい。こうすることで同じ情報量をより少ない記憶領域に格納して、補助記憶部13に空き領域を作り出してもよい。限られた記憶領域を有効利用できる利点がある。
【0070】
他の例として、上記一例とは逆に、組込デバイス1bや宇宙機1cが第1電子データ4を蓄積してこれをクラウドサーバ1aに送信してもよい。クラウドサーバ1aは、第1電子データ4を第2電子データ5に変換して、この第2電子データ5を補助記憶部13に格納してもよい。
【0071】
上述した機能は、情報処理装置1に適宜インストールされるソフトウェア(いわゆるアプリを含む)を用いて実現してもよく、ハードウェアとして実現してもよい。ソフトウェアによって実現する場合、演算処理部11がソフトウェアを構成するプログラムを実行することによって各種機能が実現されてもよく、プログラムの実行によってコンピュータを用いた情報処理方法が提供されてもよい。プログラムを実行することで実現される場合、当該プログラムは、情報処理装置1が内蔵する補助記憶部13に格納されてもよく、コンピュータが読み取り可能な非一時的な記録媒体に格納されてもよい。また、外部の記憶装置に格納されたプログラムを読み出し、いわゆるクラウドコンピューティングの形態で実現されてもよい。また、ハードウェアによって実現する場合、ASIC、SOC、FPGA、またはDRP等の種々の回路によって実現されてもよい。
【0072】
<3.実施の形態の具体的処理>
(3.1.処理パターンの例示)
図9Aは第1変換部20の処理であり、数値または文字からκ型文字列への変換(便宜上「順変換」とも称す)の流れを示す。図9Aによれば、ステップS100で、第1変換部20が、数値データ又は文字データからなる第1電子データ4を受け取る。第1電子データ4は、一例としてC++言語等のプログラミング言語における整数型、小数型又は文字型のデータ型を持つものとする。次に、ステップS102で、第1変換部20が第1電子データ4の変換処理を行う。この変換処理の具体例は、後述する「ソースコード例1」で詳しく述べる。次にステップS104で、第1変換部20は、個数指定部分と記録部分を結合させた第2電子データ5を出力する。
【0073】
図9Bは第2変換部30の処理であり、κ型文字列から数値への変換(便宜上「逆変換」とも称す)の流れを示す。図9Aによれば、ステップS106で、第2変換部30が、第2電子データ5を受け取る。次に、ステップS108で、第2変換部30が第2電子データ5の変換処理を行う。この変換処理の具体例は、後述する「ソースコード例2」で詳しく述べる。次にステップS110で、第2変換部30は、ステップS108で生成した第1電子データ4を出力する。
【0074】
以下、ソースコード例(例1~例4)を提示する。一例としてC言語やC++言語等のプログラミング言語における「char型」を利用して、κ型のデータ構造(具体的には文字列d)を生成する方法を述べる。κ型のデータ構造を有する文字列dを、「κ型文字列」とも称する。下記説明では、「char型」のd[i]を利用し、複数の単位データ5aが連結したκ型文字列dを生成する。char型変数はちょうど1バイトの単位記憶領域(単位バイト列)として利用可能なので、char型変数を単位データ5aに用いやすい。各char型変数に文字コードや数値を格納することができる。ただしこれはC++言語を用いる際の便宜上の措置であり、下記説明の「char型」が単位データ5aのデータ型を指す場合には「文字型のκ型(κ5型やκ6型)」を意味しない。
【0075】
(3.2.ソースコード例1)
下記のソースコード例1は、第1変換部20が実行する関数「int2char」を示す。関数「int2char」は、整数値tをκ型文字列dに変換するプログラムの一例である。C++言語形式であり、κ1型(整数型の個数指定部分固定型)の文字列dを得る例が示される。
【0076】
unsigned char d[9];
//数値tを文字列dに変換する。d[0]は記録する情報の幅。返値は生成文字数、-1はエラー
int int2char(uint64_t t, unsigned char *d){
for( int i = 0; i < 9; i++ ){
d[i + 1] = t & 255;
t = t >> 8;
if( t == 0 ){
d[0] = i + 1;
return i + 2;
}
}
return -1;
}
【0077】
図10を参照しつつ、一例として数値tが10進数で66,051である場合について、上記ソースコード例1に基づく変換処理を述べる。図10の第1電子データ4が、数値tに対応している。数値tのデータ型は、一例として「uint64_t」つまり「8バイトの符号なし整数」である。
【0078】
初回の処理では、初期値i=0からfor文が開始する。d[i+1]=d[1]であり、数値tに「255」のビット演算の一種であるAND演算を施した結果がd[1]に代入される。10進数の66,051は、2進数で「00000000 100000010 00000011」である。このビット列のうち、下位8ビット「00000011」が抽出され、d[1]に代入される。「00000011」は、10進数の3であり、16進数の0x03である。
【0079】
次に、「t=t>>8」つまり8ビットの右シフト演算が実行され、数値tのビット列は「000000001 00000010」となる。if文の条件「t==0」はこの時点では否定され、処理はループしてiがインクリメントされる。
【0080】
続いてi=1、d[i+1]=d[2]についての処理が実行される。「100000010」の下位8ビット「00000010」が抽出されてd[2]に代入される。「00000010」は10進数の2であり、16進数の0x02である。
【0081】
さらに処理がループして、i=2、d[i+1]=d[3]について同様の処理が行われ、d[3]に「1」が代入される。このようなfor文のループ処理により、4バイト長の第1電子データ4(数値t)のビット列「000000001 00000010 00000011」から所定の単位データ長1バイト(8ビット)を順次抽出することができる(記録部分生成部21による記録部分の生成)。この時点でd[1]~d[3]という3個の単位データ5aが生成される。d[1]=0x03、d[2]=0x02、d[3]=0x01である。
【0082】
d[3]への代入を終えた時点で、次の右シフト演算が施されると数値tがゼロとなる。そうするとif文の条件(t==0)が肯定となり、処理はループを抜け、d[0]に「i+1=2+1=3」つまり「0x03」が代入される。このd[0]が個数指定部分である(個数指定部分生成部22による個数指定部分の生成)。記録部分の単位データ5aはd[1]~d[3]である。結果、図10に示した第2電子データ5が提供される(結合部24による記録部分と個数指定部分の結合)。
【0083】
なお、上記ソースコード例1では、if文「t==0」によって右シフト演算で数値tがゼロとなった時点でループを抜ける。これにより、数値tのビット列のうち不使用部分を省いて記録部分を生成しすることができ、データ長が短縮された第2電子データ5を生成できる。例えば比較例で述べたエポック秒形式等で生ずる無駄を排除できる利点がある。ただしこのデータ長短縮処理は任意であり、省略されてもよい。変形例として、for文のループ回数(つまり生成すべきd[i+1]の個数)を任意に指定することで、所望データ長のκ型文字列を生成してもよい。この場合、記録部分の単位データ5aつまりd[i+1]の個数を、第1電子データ4のデータ長よりも短く又は長くなるように指定してもよく、これによりデータ長の短縮や拡張が可能となる。他の変形として、ソースコード例1において1行目d[9]とし4行目「i<9」としているところを、有効桁数を指定する引数nを追加してd[n]および「i<n」などの形で任意指定可能としてもよい。
【0084】
(3.3.ソースコード例2)
以下、第2変換部30が実行する関数「char2int」を示す。関数「char2int」は、κ型文字列dを数値tに変換するプログラムの一例である。C++言語形式である。
【0085】
//文字列dを数値tに変換する。返値は読込文字数。
uint64_t char2int(uint64_t* t, unsigned char* d){
*t = 0;
uint8_t i, j = d[0];
for( i = 0; i < j; i++ )
*t += ((uint64_t)d[i + 1] << (i * 8));
return ((uint64_t)j + 1);
}
【0086】
上記のソースコード例2は基本的にソースコード例1の逆変換を行っているものであるから、以下簡潔に説明する。ここでは一例として、ソースコード例1で生成した第2電子データ5を、uint64_t型の数値tに戻すものとする。
【0087】
j=d[0]によりjには3が代入される。for文でi<jつまりiが3未満でループする条件が設定されるので、i=0、1、2の3回にわたって、d[i+1]を加算する処理が実行される。この加算処理では、i*8の左シフト演算を施しつつd[i+1]の値が積算(合算)される。この点を言い換えると、第2変換部30は、まず第2電子データ5(つまりκ型文字列d)を受け取った場合に、単位データ長1バイトと、個数指定部分d[0]が格納する個数指定値(0x03)つまり「3」とに基づいて、記録部分のデータ長が3バイトであることを特定できる(個数指定値取得部31による個数指定値の取得)。記録部分に含まれる各単位データ5aであるd[1]~d[3]を所定規則に則って順次合算することで、数値t(第1電子データ4)を生成する。合算時の規則は、上記ソースコード例2では、for文により個数指定値の回数(上記例では3回)にわたってd[i+1]の加算と左シフト演算とを交互に繰り返すものである(単位データ合算部32による単位データの合算)。また左シフト演算は、単位データ長1バイト(=8ビット)の左シフトを行うものである。なお、char型のBufferの操作が伴うので、ポジションを返値としている。
【0088】
変形例として、個数指定部分可変長型(κ2型やκ4型やκ6型等)を対象とした変換処理が行われてもよい。上記ソースコード例を変形適用するにあたり、「個数指定部分のビット列のうち第1部分」を上記d[0]と同視するとともに、「個数指定部分のビット列のうち第2部分」を上記d[1]以降と同視することができる。例えばソースコード例1(数値tをκ型文字列dに変換)を変形適用する場合、まず記録部分生成部21が「数値t(第1電子データ4)のビット列」から記録部分を生成し、その過程で個数指定部分生成部22が個数指定値を得る。更に「個数指定値のビット列」を区切る処理を実行することで、個数指定部分の第1部分と第2部分の各値を得ることができる(個数指定部分ビット長取得部34による個数指定部分のビット長の取得)。
【0089】
(3.4.ソースコード例3)
下記のソースコード例3は、第1変換部20が実行する関数「Byte2Ascii」を示す。関数「Byte2Ascii」は、個数指定部分可変長型(κ2型やκ4型やκ6型等)の変換処理において、第1変換部20の個数指定部分生成部22が可変長の個数指定部分を生成するために用いるプログラムの一例である。具体的には、関数「Byte2Ascii」は、有効桁数insizeで表現される個数指定値inを、アルゴリズム上は単一で数値の上限がない型に変換する。C++言語形式であり、引数inを、継続フラグと7bitのデータ部に変換する例である。ここで、継続フラグは、ビット列上における後続の有無を判別するためのフラグである。
なお、変換後における継続フラグと7bitのデータ部とを合わせたもの(図12及び図14における各Char)を1処理単位とし、各処理単位を分割部分とも呼ぶ。分割部分は、所定のビット長(第3所定ビット長と呼ぶ)を有するとともに継続フラグによって後続の有無を判別可能な一つ以上の部分である。
【0090】
//inを7bit(out)に変換する。
uint64_t Byte2Ascii(uint64_t insize,unsigned char* in,unsigned char** out){
//outは最上位bitが1の時は次も読み込む、同が0の時は該当Byteで終了
uint64_t i,j,b;
(*out)=(unsigned char*)realloc((*out),(insize/7)*8+insize%7+1); //出力を確保
for(i=0;(i+1)*7<=insize;i++){ //7char毎に処理
(*out)[i*8+0]=in[i*7+0]&0x7f|0x80; //下位7bitを保存 --ここから--
(*out)[i*8+1]=in[i*7+1]&0x7f|0x80;
(*out)[i*8+2]=in[i*7+2]&0x7f|0x80;
(*out)[i*8+3]=in[i*7+3]&0x7f|0x80;
(*out)[i*8+4]=in[i*7+4]&0x7f|0x80;
(*out)[i*8+5]=in[i*7+5]&0x7f|0x80;
(*out)[i*8+6]=in[i*7+6]&0x7f|0x80; //--ここまで--
(*out)[i*8+7]=((i*7+6)==insize?0:0x80) //継続フラグ 最後の時は0 他は1
+(in[i*7+6]&0x80?0x40:0) //outに0~7の最上位bitを保存 --ここから--
+(in[i*7+5]&0x80?0x20:0)
+(in[i*7+4]&0x80?0x10:0)
+(in[i*7+3]&0x80?0x08:0)
+(in[i*7+2]&0x80?0x04:0)
+(in[i*7+1]&0x80?0x02:0)
+(in[i*7+0]&0x80?0x01:0); //--ここまで--
}
//端数charの処理
b=insize%7;
(*out)[i*8+b]=0; //継続フラグは0
for(j=0;j<b;j++){
(*out)[i*8+j]=in[i*7+j]&0x7f|0x80; //下位7bitを保存
(*out)[i*8+b]+=(in[i*7+j]&0x80?1<<j:0); //最上位bitを保存
}
(*out)[i*8+b+1]=0; //Nullにしておく
return i*8+b+1;
}
【0091】
以下、図11~14を参照しつつ、一例として文字数(insize)が10である文字列inが16進数で「0x54、0xd3、0xbd、0x26、0xdc、0x13、0x71、0x90、0xe8、0xe6」である場合について、上記ソースコード例3に基づく個数指定部分生成部22による変換処理を述べる。図11図13の8セルを有する枠は、charを表す。枠内の数値11~78は、十桁が各charの番号を、一桁が各char内でのビット位置を示している。ビット位置は1が上位、7が下位を示す。「継」は継続フラグであり、継続するcharを読み込む場合は1、該当charで終了する場合は0とする。
【0092】
図11は、7char以上の処理の概念図を示す。「処理後第1char」の下位7bitに、「処理前第1char」の下位7bitを設定する。「処理後第2char」~「処理後第7char」も同様に、「処理前第2char」~「処理前第7char」に設定する。「処理後第1char」~「処理後第7char」は、次charを読み込むので、1ビット目に1を設定する。
【0093】
以下、プログラムでの上記処理について述べる。まず、reallocを利用して処理結果の保管領域を確保する。次に、for文内で、7char毎に処理する。
【0094】
図12に、初回の処理の初期値「0x54、0xd3、0xbd、0x26、0xdc、0x13、0x71」のbit配列(01010100、11010011、10111101、00100110、11011100、00010011、01110001)を示す。プログラムのfor内上部の「下位7bitを保存」処理後の「処理後第1char」~「処理後第7char」は「11010100、11010011、10111101、10100110、11011100、10010011、11110001(0xd4、0xd3、0xbd、0xa6、0xdc、0x93、0xf1)」となる。プログラムのfor内下部の、「outに0~7の最上位bitを保存」処理後の「処理後第8char」は「10010110(0x96)」となる。本例のchar数は10なのでforを抜けることになる。
【0095】
残り3charの処理概念を、図13に示す。11~38は、十桁が各charの番号を、各char内でのビット位置を示している。ビット位置は1が上位、7が下位を示す。変換後の左端は継続フラグであり、継続するcharを読み込む場合は1、該当charで終了する場合は0としている。
【0096】
また、図14に、3char「0x90、0xe8、0xe6」のbit配列(10010000、11101000、11100110)を示す。図11と同様に、「処理後第1char」~「処理後第3char」は「10010000、11101000、11100110(0x90、0xe8、0xe6)」、「処理後第4char」は「00000111(0x07)」となる。プログラムでは、「端数charの処理」部分がこれに相当する。
【0097】
以上により、「0x54、0xd3、0xbd、0x26、0xdc、0x13、0x71、0x90、0xe8、0xe6」は「0xd4、0xd3、0xbd、0xa6、0xdc、0x93、0xf1、0x96、x90、0xe8、0xe6、0x07」と変換される。
【0098】
なお、上記説明したソースコード例3ではフラグ数を1としているが、これ以外のフラグを含んでもよい。また、1処理単位(したがって、第3所定ビット長)を1char(1Byte)としているが、2Byteや4bit等を処理単位とすることも同様の処理で可能であり、1charに限るわけではない。さらに、処理前と処理後で、ビット長を異ならせることも可能である。なお、例で使用しているrealloc由来のエラー処理は行っていない。
【0099】
(3.5.ソースコード例4)
下記のソースコード例4は、第2変換部30が実行する関数「Ascii2Byte」を示す。関数「Ascii2Byte」は、数値の上限がない単一の型inを個数指定値outに変換するプログラムの一例で、C++言語形式である。関数「Ascii2Byte」は、個数指定部分可変長型(κ2型やκ4型やκ6型等)の変換処理において、第2変換部30の個数指定値取得部31が可変長の個数指定部分に含まれる個数指定値を取得するために用いるプログラムの一例である。
【0100】
なお、関数「Ascii2Byte」は、「Byte2Ascii」の逆変換であるので、簡単に説明する。一例として、ソースコード例3の変換処理後の「0xd4、0xd3、0xbd、0xa6、0xdc、0x93、0xf1、0x96、x90、0xe8、0xe6、0x07」をoutに戻すものとする。
【0101】
//inを8bitに変換する。
uint64_t Ascii2Byte(unsigned char* in,unsigned char** out){
uint64_t i=0,j=0,a,b;
*out=(unsigned char*)realloc(*out,7+1);
while(in[i]&0x80){ //8char毎に処理
if(i%8==7){ //7char目は
(*out)=(unsigned char*)realloc((*out),j+7+1); //出力を確保
(*out)[j-1]+=(in[i]&0x40)?0x80:0; //最上位bitを各charに設定 --ここから--
(*out)[j-2]+=(in[i]&0x20)?0x80:0;
(*out)[j-3]+=(in[i]&0x10)?0x80:0;
(*out)[j-4]+=(in[i]&0x08)?0x80:0;
(*out)[j-5]+=(in[i]&0x04)?0x80:0;
(*out)[j-6]+=(in[i]&0x02)?0x80:0;
(*out)[j-7]+=(in[i]&0x01)?0x80:0; //--ここまで--
i++;
}else{
(*out)[j++]=(unsigned char)(in[i++]&0x7f); //下位7bitを設定
}
}
b=i%8; //端数char数
for(a=0;a<b;a++)
(*out)[j+a-b]+=(in[i]&(1<<a)?0x80:0); //最上位bitを各charに設定
(*out)[j]=0; //Nullにしておく
return j;
}
【0102】
以下、プログラムでの上記処理について述べる。まず、reallocを利用して処理結果の保管領域を確保する。処理は8char毎に最上位bitを記録したcharがあるので、8char毎を基本の処理単位とする。処理単位は最大で7char分のデータとなるので、末端のNullの1文字分を加算した「7+1」char分を初期に確保する。
【0103】
iは初期値を0とした、inの番号である。jは初期値を0とした、outの番号である。whileの分岐判定は、開始時点では「i=0」なので、「in[0]=0xd4(11010100(2))」となり、「0x80(10000000(2))」との&演算はTrueとなり、whileの中を実行することになる。
【0104】
if判定は、「i=0」の時「i%8(i÷8の剰余)」は「0」なので、Falseとなるので、else以下を実行する。「in[i]」の下位7bitを、「out[j]」に設定する。プログラムでは、「下位7bitを設定(上)」の部分である。「i++」は「iに1を加算する」ことなので、i=1となる。同様にj=1となる。
【0105】
if判定の2回目は、「i=1」「j=1」である。「1%8」は「0」なので、Falseとなるので、else以下を実行する。3回目は、「i=2」「j=2」である。4~7回目も同様である。
if判定の8回目は、「i=7」「j=7」である。「7%8」は「7」なので、Trueとなるので、ifの直下を実行する。まず、reallocを利用して処理結果の保管領域を「15=7+7+1」分確保する。「in[7]=0x96(10010110(2))」なので、各outの最上位bitの設定を行う。図12の逆処理である。
【0106】
whileの分岐判定は、「i=8」なので、「in[8]=0x90(10010000(2))」となり、「0x80(10000000(2))」との&演算はTrueとなり、whileの中を実行することになる。「i=10」までは同様に繰り返す。
【0107】
「i=11」の時は、「in[11]=0x07(00000111(2))」となり、whileの分岐判定はFalseとなる。「b=3=11%8」なので、11から3char遡り最上位bitを設定することになる。プログラムでは「最上位bitを各charに設定(下)」の部分である。図13の逆処理である。
【0108】
この時点で「j=10」なので、「out[0]~out[9]」は「0x54、0xd3、0xbd、0x26、0xdc、0x13、0x71、0x90、0xe8、0xe6」となり、逆変換であることが確認できる。また、終端文字をNullにするために「out[10]」に0を設定する。そして、returnに10を指定する。
【0109】
<4.作用効果>
以上のように、本発明の一観点に係る情報処理装置は、第1変換部20の個数指定部分生成部22が記録部分の単位データ5aの個数を個数指定値としてカウントし、当該個数指定値の情報を含むとともに当該個数指定値に応じた可変長の個数指定部分を生成するよう構成されている。このような構成により、個数指定部分のビット長を個数指定値、すなわち、記録部分の単位データ5aの個数に合った長さとすることができる。また、個数指定部分のビット長を長く確保することも可能であるため、個数指定部分が固定長である場合、変換可能な第1電子データ4のビット長に上限が生じるが、個数指定部分を可変長とすることで、より大きなサイズの第1電子データ4を変換することも可能である。
【0110】
また、本発明の他の一観点に係る情報処理装置は、第1変換部20の識別部分生成部23が第1電子データ4のデータ型を取得し、当該データ型に対応する識別値の情報を含む識別部分を生成するよう構成されている。このような構成により、第2電子データ5を第1電子データ4に再度変換する際に、当該第2電子データ5のデータ型を、第2変換部30の識別部33によって識別することが可能となっている。
【0111】
<5.変形例等>
上記の実施形態は一例であり、様々な変形、追加または省略などを行うことが可能である。変形例は、互いに適用を阻害しない限り、任意に組み合わせて用いられてもよい。
【0112】
κ型データ構造は、「個数指定部分と記録部分のみ」が連結したビット列でもよく、あるいは「識別部分と個数指定部分と記録部分のみ」が連結したビット列でもよい。変形例として、それらのビット列の先端、後端又は中間に、他の情報を持つ付加的ビット列が追加されてもよい。
【0113】
変形例として、第1変換部20と第2変換部30とのうち片方のみを備える情報処理装置1が提供されてもよいし、識別部33が省略されてもよい。例えば情報処理装置1が第1変換部20のみを備えてもよく、具体的には例えば組込デバイス1bや宇宙機1cがκ型の第2電子データ5を蓄積してその情報をクラウドサーバ1aへ送信するだけ、という運用でもよい。また、例えば、情報処理装置1が第2変換部30のみを備えてもよく、具体的には例えばクラウドサーバ1aが第2電子データ5の収集管理のみを実行するのであれば第1変換部20を備えなくともよい。
【0114】
実施の形態では、図1Aのような個数指定部分が先で記録部分が後となる順番の例や、図6Aのような識別部分と個数指定部分と記録部分とがこの順番で並ぶ例を説明しているが、並び順はこれに限られない。各部分の並び順は事前に設定すればよい。変形例として、例えば個数指定部分と記録部分とが逆でもよく、識別部分と個数指定部分と記録部分の順番も任意に変更してもよい。例えば個数指定部分が最後尾に設けられる場合、個数指定値に従って単位データ長だけビット列を遡ることで記録部分を抽出してもよい。
【0115】
図7で述べた情報処理装置1は例示にすぎない。情報処理装置1は、任意の「ハードウェア資源」を用いて構築することができる。ハードウェア資源は、電子情報を取り扱う任意の装置であり、少なくとも演算処理部、記憶部および通信部を有する。情報処理装置1を構築するハードウェア資源は、例えばスマートフォン等の携帯端末やパーソナルコンピュータなどでもよく、任意のIoTデバイスであってもよく、任意の組込デバイスであってもよく、車両等の任意の移動体に組み込まれた組込デバイスであってもよく、人工衛星や探査機等の任意の宇宙機であってもよい。例えば組込デバイス1bに限定はなく、例えば温度等を制御する各種デバイスが任意に適用されてもよい。
【0116】
個数指定部分の個数指定値が有効桁を表しており、κ型データへの各種演算が可能である。第2電子データ5と任意の値(定数や変数)との演算や、桁数が同じ又は異なる複数の第2電子データ5同士での演算をしてもよい。演算は、例えば加減乗除などの算術演算でもよく、関係演算や論理演算でもよい。当該演算のための「データ演算部」が、図8Bの演算処理部11に追加されてもよい。
【0117】
個数指定部分の値に応じて規定される記録部分のデータ長は、具体的には、例えば1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16、17、18、19、20、21、22、23、24、25、26、27、28、29、30、31、32、33、34、35、36、37、38、39、40、41、42、43、44、45、46、47、48、49、50、51、52、53、54、55、56、57、58、59、60、61、62、63、又は64ビットでもよく、或いは65ビット以上でもよく、あるいはここで例示した数値の何れか2つの範囲内であってもよい。記録部分が上記の様々なデータ長を取りうるように単位データ長も任意に設定可能である。単位データ長は、具体的には、例えば1、2、3、5、7、11、13、17、19、23、29、31、37、41、43、47、53、59、又は61ビットとしてもよく、これ以外の素数で規定するビット長でもよく、あるいはここで例示した数値の何れか2つの範囲内であってもよい。上記の点は、従来技術では64ビット単位や32ビット単位でデータ長を画一的に区切ることとは対照的である。
【0118】
本発明に係る種々の実施形態を説明したが、これらは、例として提示したものであり、発明の範囲を限定することは意図していない。当該新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。当該実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【0119】
なお、本発明は、以下の態様でも実施可能である。
【0120】
本発明の一態様に係る情報処理装置は、第1変換部を備える情報処理装置であって、前記第1変換部は、第1電子データのビット列から、所定の単位ビット列又は所定の単位バイト列を単位データとして順次抽出することで、一つ以上の前記単位データで構成された記録部分を生成し、前記記録部分の前記単位データの個数に応じた個数指定値を個数指定部分に格納し、前記個数指定部分と前記記録部分とを有する第2電子データを生成する、情報処理装置である。
【0121】
本発明の他の態様に係る情報処理装置は、第2変換部を備える情報処理装置であって、前記第2変換部は、個数指定部分と記録部分を持つ第2電子データを受け取った場合に、前記個数指定部分の個数指定値に基づいて所定の単位データ長の単位で桁をずらしながら前記記録部分に含まれる前記単位データを順次合算することで、前記個数指定部分を有さない第1電子データを生成する、情報処理装置である。
【0122】
上記各態様に関連するプログラム、データ構造、および情報処理方法も提供される。
【符号の説明】
【0123】
1:情報処理装置、1a:情報処理装置(クラウドサーバ)、1b:情報処理装置(組込デバイス)、1c:情報処理装置(宇宙機)、2:通信回線、4:第1電子データ(第1データ型)、5:第2電子データ(κ型)、5a:単位データ、11:演算処理部、12:主記憶部、13:補助記憶部、14:通信部、15:操作入力部、16:モニタ、17:システムバス、20:第1変換部、21:記録部分生成部、22:個数指定部分生成部、22c:識別部、23:識別部分生成部、24:結合部、30:第2変換部、31:個数指定値取得部、32:単位データ合算部、33:識別部、34:個数指定部分ビット長取得部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14