<p><b>CSO</b>，又稱<b>CISO</b>（源自英文<i>Compressed ISO</i>的縮寫），是一種計算機文件格式，由經過壓縮後的ISO映像產生。其是首個為了壓縮ISO映像而開發出來的方案，常被用於壓縮PS2以及PSP平台上的ISO文件，以降低存儲空間上的壓力。此外，為了優化該格式的資料壓縮比以及解壓速度等問題，該格式經歷過了數次修改與迭代，產生了諸如<b>CSO v2</b>、<b>DAX</b>、<b>JSO</b>、<b>ZSO</b>等格式。
</p><p>CSO格式第一版本（CSO v1）使用DEFLATE算法壓縮數據，同時也提供了9個壓縮級別，其中第9級為最高級別。第二版本在此基礎上添加了LZ4算法的使用，但用戶可為了保證向後兼容性僅使用DEFLATE算法進行壓縮。壓縮級別越高的代價是壓縮時間的加長，但壓縮級別不影響解壓解壓速度。其工作原理為將一個ISO文件分成無數個大小一般為2 KiB的塊，並一一地對這些塊進行壓縮。通過這種工作原理，CSO格式能有效地將ISO文件壓縮成一個較小的文件。
</p>


<h2><span id=".E6.96.87.E4.BB.B6.E6.A0.BC.E5.BC.8F"></span><span id="文件格式">文件格式</span></h2>
<p>CSO文件格式由一個 24 字節的文件頭、一份索引表和多個數據塊組成。大於一字節的欄位應使用小端法讀取。
</p>
<h3><span id=".E6.96.87.E4.BB.B6.E5.A4.B4"></span><span id="文件头">文件頭</span></h3>
<h3><span id=".E7.B4.A2.E5.BC.95.E8.A1.A8"></span><span id="索引表">索引表</span></h3>
<p>索引表中含有多個條目，每個條目的長度為4位元組，記錄著每個數據塊在文件中的位置。最後一個條目必須指向文件末（EOF），因此會多出一個條目。索引表中的條目數量可以通過以下算法計算出來：<span><span><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle N_{entries}=ceil(uncompressed\ size/block\ size)+1}">
  <semantics>
    <mrow class="MJX-TeXAtom-ORD">
      <mstyle displaystyle="true" scriptlevel="0">
        <msub>
          <mi>N</mi>
          <mrow class="MJX-TeXAtom-ORD">
            <mi>e</mi>
            <mi>n</mi>
            <mi>t</mi>
            <mi>r</mi>
            <mi>i</mi>
            <mi>e</mi>
            <mi>s</mi>
          </mrow>
        </msub>
        <mo>=</mo>
        <mi>c</mi>
        <mi>e</mi>
        <mi>i</mi>
        <mi>l</mi>
        <mo stretchy="false">(</mo>
        <mi>u</mi>
        <mi>n</mi>
        <mi>c</mi>
        <mi>o</mi>
        <mi>m</mi>
        <mi>p</mi>
        <mi>r</mi>
        <mi>e</mi>
        <mi>s</mi>
        <mi>s</mi>
        <mi>e</mi>
        <mi>d</mi>
        <mtext> </mtext>
        <mi>s</mi>
        <mi>i</mi>
        <mi>z</mi>
        <mi>e</mi>
        <mrow class="MJX-TeXAtom-ORD">
          <mo>/</mo>
        </mrow>
        <mi>b</mi>
        <mi>l</mi>
        <mi>o</mi>
        <mi>c</mi>
        <mi>k</mi>
        <mtext> </mtext>
        <mi>s</mi>
        <mi>i</mi>
        <mi>z</mi>
        <mi>e</mi>
        <mo stretchy="false">)</mo>
        <mo>+</mo>
        <mn>1</mn>
      </mstyle>
    </mrow>
    <annotation encoding="application/x-tex">{\displaystyle N_{entries}=ceil(uncompressed\ size/block\ size)+1}</annotation>
  </semantics></math></span></span>。
</p><p>條目所記錄的內容如下：
</p>
<h3><span id=".E6.95.B0.E6.8D.AE.E5.9D.97"></span><span id="数据块">數據塊</span></h3>
<p>每個數據塊都包含未壓縮或壓縮的數據。每個塊的實際大小可以通過使用下一個塊的位置中減去該塊的位置來計算。如果索引對齊大於零，則該數據塊的塊大小可能大於其保存的數據，因此需要進行填充。
</p>
<h2><span id=".E5.8F.82.E8.80.83.E8.B5.84.E6.96.99"></span><span id="参考资料">參考資料</span></h2>
<h2><span id=".E5.A4.96.E9.83.A8.E9.93.BE.E6.8E.A5"></span><span id="外部链接">外部連結</span></h2>
<ul><li>File Extension Details for .CSO</li>
<li>.CSO description （頁面存檔備份，存於網際網路檔案館）</li>
<li>ciso, the original compressor （頁面存檔備份，存於網際網路檔案館） (GPLv2)</li>
<li>maxcso, an extended compressor （頁面存檔備份，存於網際網路檔案館）</li>
<li>ISO Compressor for CSO （頁面存檔備份，存於網際網路檔案館）</li>
<li>Ciso Multi Compressor （頁面存檔備份，存於網際網路檔案館）</li>
<li>CisoPlus</li></ul><!-- 
NewPP limit report
Parsed by mw2451
Cached time: 20230505225856
Cache expiry: 1814400
Reduced expiry: false
Complications: [show‐toc]
CPU time usage: 0.129 seconds
Real time usage: 0.220 seconds
Preprocessor visited node count: 935/1000000
Post‐expand include size: 45859/2097152 bytes
Template argument size: 1119/2097152 bytes
Highest expansion depth: 8/100
Expensive parser function count: 13/500
Unstrip recursion depth: 0/20
Unstrip post‐expand size: 2066/5000000 bytes
Lua time usage: 0.048/10.000 seconds
Lua memory usage: 3446404/52428800 bytes
Number of Wikibase entities loaded: 0/400
--><!--
Transclusion expansion time report (%,ms,calls,template)
100.00%  135.809      1 -total
 45.37%   61.619      1 Template:Disk_images
 35.04%   47.581      1 Template:Navbox
 27.48%   37.326      2 Template:Cite_web
 27.21%   36.950     13 Template:Tsl
 20.15%   27.360      1 Template:Infobox_file_format
 18.44%   25.043      1 Template:Infobox
  1.14%    1.552      5 Template:Wayback
  0.67%    0.915      3 Template:Nowrap
-->
**CSO**，又稱 **CISO**（源自英文 _Compressed ISO_ 的縮寫），是一種計算機文件格式，由經過壓縮後的 ISO 映像產生。其是首個為了壓縮 ISO 映像而開發出來的方案，常被用於壓縮 PS2 以及 PSP 平台上的 ISO 文件，以降低存儲空間上的壓力。此外，為了優化該格式的資料壓縮比以及解壓速度等問題，該格式經歷過了數次修改與迭代，產生了諸如 **CSO v2**、**DAX**、**JSO**、**ZSO** 等格式。

CSO 格式第一版本（CSO v1）使用 DEFLATE 算法壓縮數據，同時也提供了 9 個壓縮級別，其中第 9 級為最高級別。第二版本在此基礎上添加了 LZ4 算法的使用，但用戶可為了保證向後兼容性僅使用 DEFLATE 算法進行壓縮。壓縮級別越高的代價是壓縮時間的加長，但壓縮級別不影響解壓解壓速度。其工作原理為將一個 ISO 文件分成無數個大小一般為 2 KiB 的塊，並一一地對這些塊進行壓縮。通過這種工作原理，CSO 格式能有效地將 ISO 文件壓縮成一個較小的文件。

## 文件格式

CSO 文件格式由一個 24 字節的文件頭、一份索引表和多個數據塊組成。大於一字節的欄位應使用小端法讀取。

### 文件頭

### 索引表

索引表中含有多個條目，每個條目的長度為 4 位元組，記錄著每個數據塊在文件中的位置。最後一個條目必須指向文件末（EOF），因此會多出一個條目。索引表中的條目數量可以通過以下算法計算出來： $N_{entries}=ceil(uncompressed\ size/block\ size)+1$ 。

條目所記錄的內容如下：

### 數據塊

每個數據塊都包含未壓縮或壓縮的數據。每個塊的實際大小可以通過使用下一個塊的位置中減去該塊的位置來計算。如果索引對齊大於零，則該數據塊的塊大小可能大於其保存的數據，因此需要進行填充。

## 參考資料

## 外部連結

* File Extension Details for .CSO
* .CSO description （頁面存檔備份，存於網際網路檔案館）
* ciso, the original compressor （頁面存檔備份，存於網際網路檔案館） (GPLv2)
* maxcso, an extended compressor （頁面存檔備份，存於網際網路檔案館）
* ISO Compressor for CSO （頁面存檔備份，存於網際網路檔案館）
* Ciso Multi Compressor （頁面存檔備份，存於網際網路檔案館）
* CisoPlus
.CSO