様々な圧縮方法を紹介していきます。用途はセーブデータ圧縮、ネタバレ防止などです。
詳細なデータを交えながら考察していきます。プログラムの圧縮ではありませんのでご注意下さい。
複数の圧縮方法で圧縮する方法良い方法です。ここでいう圧縮とは可逆圧縮の事です。非可逆圧縮は扱いません。
圧縮したい数が入った変数を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.081 秒 | このページの最終更新 : 2022/09/20 (火) 12:44:05 (565d) | ログイン
Copyright(C) 2011-2014 プチコンまとめWiki ◆1sxkymI8ji30