1.概述

前段时间,因为项目需要,需要方便对base64解码后的数据查看,网上找了一通,只有解码编码,但没有方便进行结构解析的。于是自己写了一个。

2.代码

解码分析

void btn_decode_Click(object sender, EventArgs e){if (tbx_src.Text.Length > 3){try{StringBuilder sb = new StringBuilder();byte[] outputb = Convert.FromBase64String(tbx_src.Text);if (ckb_hex.Checked){tbx_out.Text = byte2hexstring(outputb);}else{tbx_out.Text = Encoding.Default.GetString(outputb);}//lab_len.Text = "解码结果长度:" + outputb.Length.ToString();int num = 0;int stlen = 0;int[] stsize = new int[comboBoxes.Length];//大小int[] stpos = new int[comboBoxes.Length]; //位置foreach (var cb in comboBoxes){if (cb.SelectedIndex != 0){if (cb.SelectedIndex == 1) { stpos[num] = stlen; stlen += 1; stsize[num] = 1; }elseif (cb.SelectedIndex == 2) { stpos[num] = stlen; stlen += 2; stsize[num] = 2; }elseif (cb.SelectedIndex == 3) { stpos[num] = stlen; stlen += 4; stsize[num] = 4; }num++;}else break;}if (stlen == 0) { lab_sta.Text = "数据结构未设置" ; return; }int len = outputb.Length / stlen; //多少组数据lab_sta.Text ="结构数目:"+ len.ToString();for (int j = 0; j < len; j++){for (int i = 0; i < num; i++) //数据结构内部{sb.Append(textBoxes[i].Text);sb.Append(":");if (stsize[i] == 1){int a = 0;a = outputb[j * stlen + stpos[i]];if (checkBoxes[i].Checked ){if (a > 127) a = a-0x100 ;}sb.Append(a.ToString().PadLeft(4, ' '));}else if (stsize[i] == 2){if(checkBoxes[i].Checked){Int16 a = 0;a = (Int16)((Int16)(outputb[j * stlen + stpos[i]] << 0)+(Int16)((Int16)outputb[j * stlen + stpos[i] + 1] << 8));sb.Append(a.ToString().PadLeft(6, ' '));}else{UInt16 a = 0;a = (UInt16)((UInt16)((UInt16)outputb[j * stlen + stpos[i]] << 0)+ (UInt16)((UInt16)outputb[j * stlen + stpos[i] + 1] << 8));sb.Append(a.ToString().PadLeft(6, ' '));}}else if (stsize[i] == 4){if (checkBoxes[i].Checked){int a = 0;a = ((int)outputb[j * stlen + stpos[i] + 0] << 0)+ ((int)outputb[j * stlen + stpos[i] + 1] << 8)+ ((int)outputb[j * stlen + stpos[i] + 2] << 16)+ ((int)outputb[j * stlen + stpos[i] + 3] << 24);sb.Append(a.ToString().PadLeft(13, ' '));}else {uint a = 0;a = ((uint)outputb[j * stlen + stpos[i] + 0] << 0)+ ((uint)outputb[j * stlen + stpos[i] + 1] << 8)+ ((uint)outputb[j * stlen + stpos[i] + 2] << 16)+ ((uint)outputb[j * stlen + stpos[i] + 3] << 24);sb.Append(a.ToString().PadLeft(13, ' '));} }sb.Append(" ");}sb.Append("\r\n");}tbx_show.Text = sb.ToString();}catch (Exception ex){MessageBox.Show(ex.Message);}}else{lab_sta.Text = "数据不足";lab_len.Text = "";}}

编码

        private void btn_encode_Click(object sender, EventArgs e){if (tbx_src.Text.Length > 3){try{byte[] bytes = Encoding.Default.GetBytes(tbx_src.Text);tbx_out.Text = Convert.ToBase64String(bytes);lab_len.Text = "编码结果长度=" + bytes.Length.ToString();}catch (Exception ex){MessageBox.Show(ex.Message);}}else{lab_sta.Text = "数据不足";lab_len.Text = "";}}

为避免重复设置结构参数,使用ini文件记录其中数据,下次打开程序可方便加载设置。代码本网站已有大量例程,不再此多此一举粘贴。

3.附件

工具下载:https://download.csdn.net/download/wangzibigan/86736181

C#:base64解码显示相关推荐

  1. Java对图片Base64转码--HTML对Base64解码 [ Java加强版 ]

    Java对图片Base64编码 package base64;import java.awt.image.BufferedImage; import java.io.ByteArrayInputStr ...

  2. base64 解码

    在ecplise上运行的好好的,但是到服务器上发现base64解码不正确,出现了乱码的现象 程序代码如下: new String(Base64.decode(infreturn.getReturnSt ...

  3. 做个游戏 writeup base64解码网址

    下载得到一个  jar  包,用  JD-GUI  打开 RGFqaURhbGlfSmlud2FuQ2hpamk=  -->  base64解码  -->  flag{DajiDali_J ...

  4. //BASE64解码成File文件

    //BASE64解码成File文件public static void base64ToFile(String base64, String destPath,String fileName) {Fi ...

  5. php如何解码图片,php基于base64解码图片与加密图片还原实例_PHP

    本文实例讲述了php基于base64解码图片与加密图片还原的实现方法.分享给大家供大家参考.具体实现方法如下: 本例中$data是一段经过base64编码的图片.具体代码如下: 代码如下: //文件名 ...

  6. des加密+base64编码,base64解码+des解密

    des加密+base64编码,base64解码+des解密 des简单介绍 base64简单介绍 运行效果图 TestActivity.java DataEncryptionUtil.java des ...

  7. 前端DES加密、base64编码,后端DES解密、base64解码

    项目场景: 在系统开发的过程中有的时候,我们为了数据的安全性会把前端的数据进行加密,然后再在后端程序中对加密数据进行解密或解密,今天我们就在这里说2种简单的方法(DES加密.base64编码) 具体实 ...

  8. js base64解码JWT失败:VM273:1 Uncaught DOMException: Failed to execute 'atob' on 'Window': The string to

    前端获取后端服务生成JWT,利用js方法base64解码payload段: window.atob("eyJzdWIiOiJ0ZXN0MyIsInVzZXJJZCI6IjEwMTY5MiIs ...

  9. Android Base64解码失败问题

    一.现象描述 在开发过程中遇到了base64解码失败问题,ios和Android同时调用上传人脸数据,通过拍照拿到图片信息再装成base64字符串传给后台,此时发现ios上传的图片没有问题,Andro ...

最新文章

  1. Sphinx武林秘籍(上)
  2. 【Tiny4412】制作最小文件系统脚本
  3. pythonopencv算法_python opencv之SURF算法示例
  4. 未来机器人哆拉A梦身上的高科技程序应用
  5. 前端写分页(用了自己同事写的插件)
  6. spring之IOC和DI关系
  7. blogic-io.xml文件中的出力属性和output.javabean文件中的属性需要一一对应
  8. Skara 是研究JDK源代码的工具
  9. Hadoop安装教程 Linux版
  10. arduino 有源 蜂鸣器_(二十)arduino入门:蜂鸣器的使用
  11. java cnzz_cnzz 模拟请求登录(传入url get data ) demo
  12. 技术分享 | Hulu视频广告系统中的算法应用
  13. APM, EAM, AIP都是什么鬼?
  14. LF-YOLO: A Lighter and Faster YOLO for Weld Defect Detection of X-ray Image
  15. 2020年第一波薅当当网羊毛的机会,别错过!
  16. 在WORD中批量修改图片大小
  17. Python:快速去除PDF水印
  18. C 语言取整的几种方法
  19. jquery+easyui培训文档
  20. 清晰明了,什么是贝叶斯定理?朴素贝叶斯又是什么?

热门文章

  1. 服装销售管理系统设计java_java毕业设计_springboot框架的四季屋服装销售管理系统...
  2. SAP ABAP 调用 BAPI_GOODSMVT_CREATE 没有执行 MIGO/MB0A 相同检查的问题
  3. css3旋转木马轮播图,3D旋转木马轮播图(原创)
  4. 3D目标检测框架综述(OpenPCDet、mmdet3d、Det3D、Paddle3D)
  5. 两分钟研究透idea中Git文件的颜色,绿红蓝白灰
  6. Linux 常见面试题
  7. 快递管理系统项目整理
  8. 梦之光芒ctf小游戏闯关过程
  9. iOS H5原生WKWebView调起支付宝客户端支付方案
  10. C# MQTT 消息订阅