プチコンまとめWiki (初代/mkII)

圧縮の方法

パンくずリスト

概要

様々な圧縮方法を紹介していきます。用途はセーブデータ圧縮、ネタバレ防止などです。
詳細なデータを交えながら考察していきます。プログラムの圧縮ではありませんのでご注意下さい。
複数の圧縮方法で圧縮する方法良い方法です。ここでいう圧縮とは可逆圧縮の事です。非可逆圧縮は扱いません。

圧縮方法一覧

HEX$()圧縮

圧縮したい数が入った変数を、圧縮された数を入れる変数をB$、展開された数を入れる変数をとすると、

圧縮方法

  1. B$=HEX$(A)

展開方法

  1. C=VAL(”&H”+B$)

(圧縮前、圧縮後)=(10進数、16進数)である。

性能
文字列の圧縮不可
正の整数の圧縮可能
負の整数の圧縮可能
小数の圧縮不可
圧縮後の状態文字列
圧縮後の文字数1〜5
圧縮プログラムの行数1
展開プログラムの行数1
削減率※-150%〜50%

※詳細
圧縮前が0〜9なら削減率は0%である。
圧縮前が10〜15なら削減率は50%である。
圧縮前が16〜99なら削減率は0%である。
圧縮前が100〜255なら削減率は33.33%である。
圧縮前が256〜999なら削減率は0%である。
圧縮前が1000〜4095なら削減率は25%である。
圧縮前が4096〜9999なら削減率は0%である。
圧縮前が10000〜65536なら削減率は20%である。
圧縮前が65536〜99999なら削減率は0%である。
圧縮前が100000〜524287なら削減率は16.66%である。
圧縮前が-1〜-9なら削減率は-150%である。
圧縮前が-10〜-99なら削減率は-66.66%である。
圧縮前が-100〜-999なら削減率は-25%である。
圧縮前が-1000〜-9999なら削減率は0%である。
圧縮前が-10000〜-99999なら削減率は16.66%である。
圧縮前が-100000〜-524287なら削減率は28.57%である。

欠点は削減率が0%以下になる場合がある事です。負の整数を使っていないときはそのような事はありません。

CHR$()圧縮

圧縮したい数が入った変数を、圧縮された数を入れる変数をB$、展開された数を入れる変数をとすると、

圧縮方法

  1. B$=CHR$(A)

展開方法

  1. C=ASC(B$)

(圧縮前、圧縮後)=(文字コード、文字)です。

性能
文字列の圧縮不可
正の整数の圧縮0〜255のみ可能
負の整数の圧縮不可
小数の圧縮不可
圧縮後の状態文字列
圧縮後の文字数1
圧縮プログラムの行数1
展開プログラムの行数1
削減率※0%〜50%

※詳細
圧縮前が0〜9なら削減率は0%である。
圧縮前が10〜99なら削減率は50%である。
圧縮前が100〜255なら削減率は33.33%である。

欠点は圧縮できる範囲が狭いことです。削減率はそこそこですが削減できる文字じたいは0〜2文字です。
圧縮後は全て1文字なので複数のデータを一つにまとめるのが容易です。

圧縮のための変換

小数と小数点無し表記の変換

これにより小数も整数のように圧縮することが出来ます。
例)145.5⇔1451、87.39⇔87392、0.002⇔23

アルゴリズムについて
例)12.1*10⇔12.1*10^1⇔121,1⇔1211
例)1.38*100⇔1.38*10^2⇔138,2⇔1382
例)36.287*1000⇔36.287*10^3⇔36287,3⇔362873
例)5.2127*10000⇔5.2127*10^4⇔52127,4⇔521274
のような感じです。

変換したい数が入った変数を、変換された数を入れる変数をとすると、

小数→小数点無し

  1. I=0:B=A
  2. @START
  3.  IF B==FLOOR(B) GOTO@ENDER
  4.  D=INSTR(STR$(B),”.”)
  5.  E$=MID$(STR$(B),0,D)
  6.  F$=MID$(STR$(B),D+1,1)
  7.  G=LEN(STR$(B))−D
  8.  H$=MID$(STR$(B),D+2,G)
  9.  B=VAL(B$):I=I+1
  10. GOTO@START
  11. @ENDER
  12. B=VAL(STR$(B)+STR$(I))

変換したい数が入った変数を、変換された数を入れる変数をとすると、

小数点無し→小数

  1. B$=STR$(B)
  2. C=VAL(LEFT$(B$,LEN(B$)−1))
  3. FOR I=1 TO VAL(RIGHT$(B$,1))
  4.  C=C/10
  5. NEXT

CHECKER FLAG (ひとことコメント)

コメントがあれば一言どうぞ。(作品に直接関係ない質問や雑談は掲示板へ)


表示モード : [ スマホ・3DS対応表示 | クラシック表示 ]
PukiWiki 1.4.7 Copyright © 2001-2006 PukiWiki Developers Team. License is GPL. Based on "PukiWiki" 1.3 by yu-ji
ページの処理時間 : 0.024 秒 | このページの最終更新 : 2016/02/20 (土) 21:09:20 (1241d) | ログイン
Copyright(C) 2011-2014 プチコンまとめWiki ◆1sxkymI8ji30