2020年10月26日 星期一

[C#]SHA加密練習

 照著書本key,練習一下

using System;

using System.IO;

using System.Security.Cryptography;

using System.Text;

using System.Threading;

using System.Threading.Tasks;


namespace ConsoleApp1

{

    class Program

    {

        static void Main(string[] args)

        { 

            using(FileStream fsin=File.Create("ver1.smp"))

            {

                byte[] buffer = new byte[256];

                Random rand = new Random();

                for(int x=0;x<150;x++)

                {

                    rand.NextBytes(buffer);

                    fsin.Write(buffer);

                }

            }

            File.Copy("ver1.smp", "ver2.smp", true);

            string curdir = Directory.GetCurrentDirectory();

            string[] files = Directory.GetFiles(curdir, "*.smp");

            SHA1 sha = SHA1.Create();

            foreach(string f in files)

            {

                using(FileStream fs=File.OpenRead(f))

                {

                    byte[] result = sha.ComputeHash(fs);

                    Console.WriteLine("file {0} Hash:", Path.GetFileName(f));

                    

                    StringBuilder bd = new StringBuilder();

                    foreach(byte b in result)

                    {

                        bd.AppendFormat("{0:X2} ", b);

                    }

                    Console.Write(bd + "\n\n");

                }

            }

            sha.Dispose();

        }

    }

}

2020年10月25日 星期日

[python]學習FFT

 照著網路文章打:

import numpy as np

import pylab as pl

sampling_rate=8000

fft_size=512

t=np.arange(0,1,1.0/sampling_rate)

x=np.sin(2*np.pi*156.25*t)+2*np.sin(2*np.pi*234.375*t)

xs=x[:fft_size]

xf=np.fft.rfft(xs)/fft_size

freqs=np.linspace(0,sampling_rate/2,fft_size/2+1)

xfp=20*np.log10(np.clip(np.abs(xf),1e-20,1e1000))


pl.figure(figsize=(8,4))

pl.subplot(211)

pl.plot(t[:fft_size],xs)

pl.xlabel(u"time(sec)")

pl.title(u"The Wave and Spectrum 156.25Hz 234.375Hz")

pl.subplot(212)

pl.plot(freqs,xfp)

pl.xlabel(u"Hz")

pl.subplots_adjust(hspace=0.4)

pl.show()



不錯的文章:

基於Python的數位訊號處理初步
https://kknews.cc/zh-tw/code/meppkp2.html

理解頻域、時域、FFT和加窗 加深對信號的認識
https://kknews.cc/news/q5b83a8.html



2020年10月22日 星期四

[C#]簡單 Pipe 傳輸

 照著課本練習


using System;

using System.IO;

using System.IO.Pipes;


namespace pipe_1

{

    class Program

    {

        static void Main(string[] args)

        {

            Console.WriteLine("Hello World! pipe 1");

            using (NamedPipeServerStream server=new NamedPipeServerStream("demo"))

            {

                server.WaitForConnection();

                try

                {

                    using(StreamReader reader=new StreamReader(server))

                    {

                        string msg = null;

                        while((msg=reader.ReadLine())!=null)

                        {

                            Console.WriteLine($"client:{msg}");

                        }

                    }

                }

                catch

                {

                    Console.WriteLine("error");

                }

             //   Console.WriteLine(" wait exit");

             //   Console.Read();

            }

        }

    }

}

using System;
using System.IO;
using System.IO.Pipes;

namespace pipe_2
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World! pipe 2");

             using(NamedPipeClientStream client=new NamedPipeClientStream("demo"))
            {
                client.Connect();

                using(StreamWriter writer=new StreamWriter(client))
                {
                    writer.AutoFlush = true;
                    
                    while(true)
                    {
                        Console.WriteLine("transmiter:");
                        string msg = Console.ReadLine();
                        if(!String.IsNullOrWhiteSpace(msg))
                        {
                            writer.WriteLine(msg);
                        }
                    }
                }
            }
        }
    }
}




2020年10月21日 星期三

[C#]memory mapped to file

照著課本練習key in

using System;

using System.IO;

using System.IO.Compression;

using System.IO.MemoryMappedFiles;

using System.Net.Http.Headers;

using System.Numerics;


namespace ConsoleApp1

{

    class Program

    {

        static void Main(string[] args)

        {

            Console.WriteLine("Hello World!");


            MemoryMappedFile file = MemoryMappedFile.CreateNew("test", 200L);


            using(var mvstream=file.CreateViewStream())

            {

                using(StreamWriter writer=new StreamWriter(mvstream))

                {

                    writer.WriteLine("hello 1st");

                    writer.WriteLine("hello 2th");

                }

            }


            using(MemoryMappedFile mfile=MemoryMappedFile.OpenExisting("test"))

            {

                using (var vstream=mfile.CreateViewStream())

                {

                    using (StreamReader resder = new StreamReader(vstream))

                    {

                        string str = resder.ReadToEnd();

                        Console.WriteLine(str);

                    }

                }

                

            }


            using (MemoryMappedFile mmfile = MemoryMappedFile.CreateFromFile("map.data", FileMode.OpenOrCreate, "udemo", 100L))

            {

                using (var vstream = mmfile.CreateViewStream())

                {

                    using (BinaryWriter writer = new BinaryWriter(vstream))

                    {

                        writer.Write(150);

                        writer.Write(1.17f);

                        writer.Write(96000L);

                        writer.Write(13.965d);

                    }

                }

            }


            using(FileStream stream=File.OpenRead("map.data"))

            {

                Console.WriteLine($"file size:{stream.Length}");

                using(BinaryReader reader=new BinaryReader(stream))

                {

                    int v1 = reader.ReadInt32();

                    float v2 = reader.ReadSingle();

                    long v3 = reader.ReadInt64();

                    double v4 = reader.ReadDouble();

                    Console.WriteLine($"AAA:{v1}  {v2}  {v3}  {v4}");

                }

            }

        }

    }


}


[C#] Zip 壓縮/解壓縮檔案

 照著課本,練習Key:

using System;

using System.IO;

using System.IO.Compression;

using System.Net.Http.Headers;

using System.Numerics;


namespace ConsoleApp1

{

    class Program

    {


        static void Main(string[] args)

        {

            Console.WriteLine("Hello World!");


            //DeflateStream


            using(FileStream instream=new FileStream("doc1.txt",FileMode.Open))

            using(FileStream outstream=new FileStream("out.def",FileMode.Create))

            using (DeflateStream defstream=new DeflateStream(outstream,CompressionLevel.Optimal))

            {

                instream.CopyTo(defstream);

            }

            FileInfo info1 = new FileInfo("doc1.txt");

            FileInfo info2 = new FileInfo("out.def");

            Console.WriteLine($"Before Compress:{info1.Length}");

            Console.WriteLine($"After Comoress:{info2.Length}");




            //zip


            string zipFile = "demo.zip";

            using (FileStream outfs =File.Create(zipFile))

            {

                using (ZipArchive zip = new ZipArchive(outfs, ZipArchiveMode.Create))

                {

                    ZipArchiveEntry etl = zip.CreateEntry("doc1.txt");

                    using (Stream stream = etl.Open())

                    {

                        using (StreamWriter writer = new StreamWriter(stream))

                        {

                            writer.Write("範例文件 A");

                        }

                    }


                    ZipArchiveEntry et2 = zip.CreateEntry("doc2.txt");

                    using (Stream stream=et2.Open())

                    {

                        using(StreamWriter writer =new StreamWriter(stream))

                        {

                            writer.Write("範例文件 B");

                        }

                    }    

                }

            }


            using (FileStream instream = File.OpenRead(zipFile))

            {

                using(ZipArchive zip=new ZipArchive(instream))

                {

                    foreach(ZipArchiveEntry et in zip.Entries)

                    {

                        using(Stream stream=et.Open())

                        {

                            using(FileStream fsout=File.Create(et.Name))

                            {

                                stream.CopyTo(fsout);

                            }

                        }

                    }

                }

            }


            //GZipStream

            string outFileName = "demo.gz";

            using (FileStream fsIn = File.OpenRead("doc1.txt")) 

            using (FileStream fsOut = File.Create(outFileName)) 

            using (GZipStream gz = new GZipStream(fsOut, CompressionMode.Compress))

            {

                fsIn.CopyTo(gz);

            }


            FileInfo info3 = new FileInfo("doc1.txt");

            FileInfo info4 = new FileInfo(outFileName);

            Console.WriteLine($"Before Compress:{info3.Length}");

            Console.WriteLine($"After Comoress:{info4.Length}");


        }

    }


}