プチコンまとめ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.081 秒 | このページの最終更新 : 2022/09/20 (火) 12:44:05 (565d) | ログイン
Copyright(C) 2011-2014 プチコンまとめWiki ◆1sxkymI8ji30