daily update on 20240419 by nitload youmu, SSD merged into main stream
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
using StgSharp.Data;
|
||||
using StgSharp.Data.FileIO;
|
||||
|
||||
using StgSharpData;
|
||||
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
|
||||
namespace StgSharpDataEncoder
|
||||
{
|
||||
internal class Program
|
||||
{
|
||||
static unsafe void Main(string[] args)
|
||||
{
|
||||
string test =
|
||||
"aaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbsddfdsfsdfdsfsdfsdfsdfsdfsdfdsfsdfdsfsdfsdfsdfsdfsfsdfsdfccccccccccccccccccccccccc";
|
||||
|
||||
|
||||
|
||||
byte[] array = CodeSeparator.SeparateCode<byte>(
|
||||
Encoding.UTF8.GetBytes(test));
|
||||
List<(byte, ulong)> list = CodeSeparator.CountCodeFrequency(array);
|
||||
foreach (var i in list)
|
||||
{
|
||||
Console.WriteLine($"{i.Item1}\t{i.Item2}");
|
||||
}
|
||||
|
||||
Console.WriteLine();
|
||||
Console.WriteLine();
|
||||
|
||||
HuffmanTree<byte> tree = HuffmanTree<byte>.BuildHuffmanTree(list);
|
||||
foreach (var i in tree.LeafList)
|
||||
{
|
||||
Console.WriteLine($"{i.Value}\t{i.frequency}\t" +
|
||||
$"{(i.Left == null ? 0 : i.Left.frequency)}\t" +
|
||||
$"{(i.Right == null ? 0 : i.Right.frequency)}");
|
||||
}
|
||||
|
||||
Console.WriteLine();
|
||||
Console.WriteLine();
|
||||
|
||||
Dictionary<byte, HuffmanKey<byte>> encodeDictionary
|
||||
= tree.BuildHuffmanDictionary();
|
||||
|
||||
Console.WriteLine();
|
||||
Console.WriteLine();
|
||||
foreach (var item in encodeDictionary)
|
||||
{
|
||||
Console.WriteLine(
|
||||
$"{item.Key}\t" +
|
||||
$"{item.Value}"
|
||||
);
|
||||
}
|
||||
Encode.Freeze(encodeDictionary);
|
||||
|
||||
EncodeStream encodeStream = new EncodeStream();
|
||||
foreach (var item in array)
|
||||
{
|
||||
var bits = encodeDictionary[item];
|
||||
encodeStream.WriteBits(bits);
|
||||
}
|
||||
Console.WriteLine();
|
||||
Console.WriteLine();
|
||||
foreach (var item in encodeStream.EncodeData)
|
||||
{
|
||||
Console.Write($"{item}\t");
|
||||
}
|
||||
Console.WriteLine();
|
||||
Console.WriteLine();
|
||||
Console.WriteLine($"{array.Length}\t{encodeStream.Length}");
|
||||
|
||||
SSDraw testRaw = new SSDraw("test");
|
||||
testRaw.WriteRaw(encodeStream.EncodeData.ToArray());
|
||||
testRaw.CreateRawFile("",true);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user