様々な圧縮方法を紹介していきます。用途はセーブデータ圧縮、ネタバレ防止などです。
詳細なデータを交えながら考察していきます。プログラムの圧縮ではありませんのでご注意下さい。
複数の圧縮方法で圧縮する方法良い方法です。ここでいう圧縮とは可逆圧縮の事です。非可逆圧縮は扱いません。
圧縮したい数が入った変数をA、圧縮された数を入れる変数をB$、展開された数を入れる変数をCとすると、
圧縮方法
- B$=HEX$(A)
展開方法
- 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%以下になる場合がある事です。負の整数を使っていないときはそのような事はありません。
圧縮したい数が入った変数をA、圧縮された数を入れる変数をB$、展開された数を入れる変数をCとすると、
圧縮方法
- B$=CHR$(A)
展開方法
- 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
のような感じです。
変換したい数が入った変数をA、変換された数を入れる変数をBとすると、
小数→小数点無し
- I=0:B=A
- @START
- IF B==FLOOR(B) GOTO@ENDER
- D=INSTR(STR$(B),”.”)
- E$=MID$(STR$(B),0,D)
- F$=MID$(STR$(B),D+1,1)
- G=LEN(STR$(B))−D
- H$=MID$(STR$(B),D+2,G)
- B=VAL(B$):I=I+1
- GOTO@START
- @ENDER
- B=VAL(STR$(B)+STR$(I))
変換したい数が入った変数をB、変換された数を入れる変数をCとすると、
小数点無し→小数
- B$=STR$(B)
- C=VAL(LEFT$(B$,LEN(B$)−1))
- FOR I=1 TO VAL(RIGHT$(B$,1))
- C=C/10
- NEXT
コメントがあれば一言どうぞ。(作品に直接関係ない質問や雑談は掲示板へ)
表示モード : [ スマホ・3DS対応表示 | クラシック表示 ]
PukiWiki 1.4.7 Copyright © 2001-2006 PukiWiki Developers Team. License is GPL. Based on "PukiWiki" 1.3 by yu-ji
ページの処理時間 : 0.035 秒 | このページの最終更新 : 2016/02/20 (土) 21:09:20 (2288d) | ログイン
Copyright(C) 2011-2014 プチコンまとめWiki ◆1sxkymI8ji30