首页 > 编程语言 >C# 字符串转码后操作二进制文件

C# 字符串转码后操作二进制文件

时间:2023-07-28 17:36:40浏览次数:27  
标签:binFile string 转码 C# 二进制 str var public

  • String转码后写入二进制文件,读二进制文件进行解码返回。
    public class BinaryClass
    {
        /// <summary>
        /// 写二进制文件
        /// </summary>
        /// <param name="binFile"></param>
        /// <param name="str"></param>
        public static void WriterBinaryFile(string binFile, params string[] paramsStrs)
        {
            var outputStream = File.Create(binFile);
            using (var writer = new BinaryWriter(outputStream))
            {
                foreach (var str in paramsStrs)
                {
                    string strResult = StringToBinary(str);
                    writer.Write(strResult);
                }
            }
        }
        /// <summary>
        ///  读二进制文件 String
        /// </summary>
        /// <param name="binFile"></param>
        /// <returns></returns>
        public static string ReadBinaryFileString(string binFile)
        {
            string strRes = string.Empty;
            var inputStream = File.Open(binFile, FileMode.Open);
            using (var reader = new BinaryReader(inputStream))
            {
                strRes = reader.ReadString();
            }
            return strRes;
        }
        /// <summary>
        /// 读二进制文件 Array(string[])
        /// </summary>
        /// <param name="binFile"></param>
        /// <param name="paramsStrs"></param>
        /// <returns></returns>
        public static string[] ReadBinaryFileArray(string binFile, params string[] paramsStrs)
        {
            string[] strResArr = new string[paramsStrs.Length];
            var inputStream = File.Open(binFile, FileMode.Open);
            using (var reader = new BinaryReader(inputStream))
            {
                for (int i = 0; i < paramsStrs.Length; i++)
                {
                    string str = reader.ReadString();
                    strResArr[i] = BinaryToString(str);
                }
            }
            return strResArr;
        }
        /// <summary>
        /// 读二进制文件 Object
        /// </summary>
        /// <param name="binFile"></param>
        /// <returns></returns>
        public static CacheBinaryDto? ReadBinaryFileObject(string binFile)
        {
            string strRes = string.Empty;
            var inputStream = File.Open(binFile, FileMode.Open);
            using (var reader = new BinaryReader(inputStream))
            {
                strRes = reader.ReadString();
            }
            return JsonConvert.DeserializeObject<CacheBinaryDto>(strRes);
        }
        /// <summary>
        /// 读二进制文件 List<Object>
        /// </summary>
        /// <param name="binFile"></param>
        /// <param name="paramsStrs"></param>
        /// <returns></returns>
        public static List<CacheBinaryDto> ReadBinaryFileListObject(string binFile, params string[] paramsStrs)
        {
            string[] strResArr = ReadBinaryFileArray(binFile, paramsStrs);
            List<CacheBinaryDto> result = new List<CacheBinaryDto>();
            foreach (var str in strResArr)
            {
                result.Add(JsonConvert.DeserializeObject<CacheBinaryDto>(str));
            }
            return result;
        }
        /// <summary>
        /// 将字符串转成二进制
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        public static string StringToBinary(string str)
        {
            byte[] data = Encoding.ASCII.GetBytes(str);
            StringBuilder result = new StringBuilder(data.Length * 8);
            foreach (byte b in data)
            {
                result.Append(Convert.ToString(b, 2).PadLeft(8, '0'));
                result.Append("001&01001*");
            }
            return result.ToString();
        }

        /// <summary>
        /// 将二进制转成字符串
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        public static string BinaryToString(string str)
        {
            System.Text.RegularExpressions.CaptureCollection cs = System.Text.RegularExpressions.Regex.Match(str.Replace("001&01001*", ""), @"([01]{8})+").Groups[1].Captures;
            byte[] data = new byte[cs.Count];
            for (int i = 0; i < cs.Count; i++)
            {
                data[i] = Convert.ToByte(cs[i].Value, 2);
            }
            string strRes = Encoding.ASCII.GetString(data, 0, data.Length);
            return strRes;
        }
    }

    public class CacheBinaryDto
    {
        public string Key { get; set; }
        public string Content { get; set; }

    }

 

标签:binFile,string,转码,C#,二进制,str,var,public
From: https://www.cnblogs.com/LaoPaoEr/p/17588459.html

相关文章

  • 【C++学习之路】引用(reference)
    变量名实质上是一段连续内存空间的别名,是一个标号,程序通过变量来申请并命名内存空间。引用的本质:就是给变量名取一个别名普通变量的引用inta=10;//定义的时候,&修饰变量为引用b就是a的别名(引用)//洗头膏不会为引用开辟空间int&b=a;//引用必须初始化系统数组的引用intarr[5]......
  • CSS隐藏滚动条
    一、纯CSS+div样式隐藏在需要滚动的元素外面再套一个div,给最外面的div设置样式overflow:hidden,宽度比需要滚动的元素小;之后给需要滚动的元素设置样式overflow-x:hidden;overflow-y:scroll;<styletype="text/css">*{margin:0;padding:0;}.box{width:100px;height:300px;......
  • 【软件测试】简易挡板测试——Mock服务搭建及使用方法
    1. Mock介绍1.1Mock简介Mock测试也被称为替代测试与挡板测试,Mock 测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法。这个虚拟的对象就是Mock对象。Mock对象就是真实对象在调试期间的代替品。形如上图,服务B就可以用Mo......
  • windows下shellcode注入的例子(WriteProcessMemory+CreateRemoteThread)
    vs里x64编译如下代码:  #include<iostream>#include<Windows.h>//#include"common.h"intmain(){ //msfvenom-pwindows/x64/execCMD=notepad.exe-fc unsignedcharshellcode[]= "\xfc\x48\x83\xe4\xf0\xe8\xc0\x00\x0......
  • cisp认证,让你在信息安全领域“风生水起”
    CISP认证CISP 即“注册信息安全专业人员”,系国家对信息安全人员资质的最高认可。英文为CertifiedInformationSecurityProfessional(简称CISP)。CISP是强制培训的。如果想参加 CISP考试,必须要求出具授权培训机构的培训合格证明,培训后直接由GLAB提供给国测中心。CISP认......
  • 最全springcloudAlibaba视频笔记-第三章Nacos Config服务配置中心
    NacosConfig服务配置中心课程视频:https://www.bilibili.com/video/BV1VW4y1o7n5本课程使用的是目前最新版本2022.0.0.0-RC2。基于SpringBoot3.0与JDK20的开发环境。集群中每一台主机的配置文件都是相同的,对配置文件的更新维护就成为了一个棘手的问题。此时就出现了配置中心......
  • Android NFC简介
    目录:AndroidNFC1 简介1.1 什么是 NFC1.2Android 上的 NFC1.3Android 中的 NFC 通讯机制2 用法2.1 读取 tag2.2 发送消息2.2.1 发送过程2.2.2NDEF 消息格式1 简介1.1 什么是 NFC近场通讯 (NearFiledCommunication) 技术是一种近距离的高频无线......
  • C/C++初学者练习题库(Dev-C++开发环境)
    C/C++初学者练习题库(Dev-C++开发环境)几年前制作的一套C/C++程序题库,其目的是为了使学生在课堂上熟悉掌握C/C++基础知识。程序自带检验和错误反馈功能,并有积分激励机制,当时学校机房电脑只配置了Dev-C++开发环境,所以为了便于学生使用,题库的设计也就以在Dev-C++开发环境上使用......
  • 腾讯云 CODING 成为首批 TISC 企业级平台工程综合能力要求标准贡献单位
    点击链接了解详情今天,由中国信通院主办的“2023数字生态发展大会”暨中国信通院“铸基计划”年中会议在京召开。本次大会全面总结了“铸基计划”上半年度工作成果,帮助行业解析数字化转型发展趋势,链接供给侧和需求侧企业,以期推动我国数字生态高质量发展。在会上,腾讯云CODING......
  • CTFer成长记录——CTF之Web专题·bugku—备份是个好习惯
    一、题目链接https://ctf.bugku.com/challenges/detail/id/83.html?id=83二、解法步骤  打开网站,发现是一串字符串:    解码:[空密码]/[EmptyString],无结果。题目提示“备份是个好习惯”,那么尝试访问index.php.bak和index.php.swp,这两个文件,看看存不存在。于是在index.......