UE4 C++ Base64编解码

FString AUniqueID::Base64Encode(const unsigned char* Data, int DataByte)
{//编码表const char EncodeTable[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";//返回值FString strEncode;unsigned char Tmp[4] = { 0 };for (int i = 0; i<(int)(DataByte / 3); i++){Tmp[1] = *Data++;Tmp[2] = *Data++;Tmp[3] = *Data++;strEncode += EncodeTable[Tmp[1] >> 2];strEncode += EncodeTable[((Tmp[1] << 4) | (Tmp[2] >> 4)) & 0x3F];strEncode += EncodeTable[((Tmp[2] << 2) | (Tmp[3] >> 6)) & 0x3F];strEncode += EncodeTable[Tmp[3] & 0x3F];}//对剩余数据进行编码int Mod = DataByte % 3;if (Mod == 1){Tmp[1] = *Data++;strEncode += EncodeTable[(Tmp[1] & 0xFC) >> 2];strEncode += EncodeTable[((Tmp[1] & 0x03) << 4)];strEncode += "==";}else if (Mod == 2){Tmp[1] = *Data++;Tmp[2] = *Data++;strEncode += EncodeTable[(Tmp[1] & 0xFC) >> 2];strEncode += EncodeTable[((Tmp[1] & 0x03) << 4) | ((Tmp[2] & 0xF0) >> 4)];strEncode += EncodeTable[((Tmp[2] & 0x0F) << 2)];strEncode += "=";}return strEncode;
}void AUniqueID::Base64Decode(const char* Data, int DataByte, TArray<BYTE>& OutData)
{//解码表const char DecodeTable[] ={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,62, // '+'0, 0, 0,63, // '/'52, 53, 54, 55, 56, 57, 58, 59, 60, 61, // '0'-'9'0, 0, 0, 0, 0, 0, 0,0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, // 'A'-'Z'0, 0, 0, 0, 0, 0,26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, // 'a'-'z'};//返回值int nValue;int i = 0;while (i < DataByte){if (*Data != '\r' && *Data != '\n'){nValue = DecodeTable[*Data++] << 18;nValue += DecodeTable[*Data++] << 12;OutData.Add((nValue & 0x00FF0000) >> 16);if (*Data != '='){nValue += DecodeTable[*Data++] << 6;OutData.Add((nValue & 0x0000FF00) >> 8);if (*Data != '='){nValue += DecodeTable[*Data++];OutData.Add(nValue & 0x000000FF);}}i += 4;}else// 回车换行,跳过{Data++;i++;}}
}

UE4 C++ Base64编解码相关推荐

  1. 通过OpenSSL的接口实现Base64编解码

    对openssl genrsa产生的rsa私钥pem文件,使用普通的base64解码会有问题,如使用https://blog.csdn.net/fengbingchun/article/details ...

  2. Java实现BASE64编解码

    Java实现BASE64编解码 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs BASE64和其它类似的编码算法通经常使用于转换二进制数据为文本数据,其目 ...

  3. python 图片base64 编解码,转换成Opencv,PIL.Image图片格式

    Python PIL.Image和OpenCV图像格式相互转换 二进制打开图片文件,base64编解码转成Opencv格式: # coding: utf-8 import base64 import ...

  4. Delphi 自带的 Base64 编解码函数

    今天帮别人解决一个关于 Base64 编解码的问题,竟然发现 Delphi 自带了 Base64 编解码的单元,叫 EncdDecd,这名字很拗口而且不直观,估计这是一直很少人关注和知道的原因. 这个 ...

  5. Java 8实现BASE64编解码

    Java 8实现BASE64编解码 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs Java一直缺少BASE64编码 API,以至于通常在项目开发中会选用 ...

  6. Notepad++插件Base64编解码

    我们平常进行Base64编码需要自己写代码转换, 或者使用其他人编写的小工具程序, 也可以使用在线base64编码工具, 现在我们还可以使用Notepad++自带的插件, 进行Base64编码和解码, ...

  7. Python学习教程:Python3内置模块之base64编解码方法小结

    Python学习教程:Python3内置模块之base64编解码方法小结 概述 Base64 是网络上最常见的用于传输 8Bit 字节码的编码方式之一,Base64 就是一种基于 64 个可打印字符来 ...

  8. ubuntu下c++中base64编解码测试和图片编解码测试

    全栈工程师开发手册 (作者:栾鹏) 架构系列文章 字符数组的base64编解码 base64.h #include <string>std::string base64_encode(un ...

  9. MSDK手Q邀请透传参数问题:url编解码与base64编解码

    最近做MSDK手Q的邀请功能,遇到一个坑,手Q结构化消息分享功能接口如下: /*** @param scene 标识发送手Q会话或者Qzone* eQQScene.QQScene_QZone: 分享到 ...

  10. delphi Base64 编解码

    Delphi 自带了 Base64 编解码的单元,叫 EncdDecd,这名字很拗口而且不直观,估计这是一直很少人关注和知道的原因. 这个单元提供两套四个公开函数: 对流的编解码: procedure ...

最新文章

  1. CentOS安装oracleJDK
  2. spark mllib 朴素贝叶斯 naive bayes
  3. 他来了他来了!阿里云混合云全新升级高燃来袭!
  4. 浅谈Linux磁盘存储管理续【逻辑卷管理(LVM)】
  5. 如何给开源项目提过 PR 呢?其实很简单
  6. 菜鸟学习Spring——SpringMVC注解版解析不同格式的JSON串
  7. 子群和Lagrange定理
  8. http://www.cnblogs.com/huxj/archive/2009/11/21/1607791.html
  9. 用python读取cifar-10与cifar-100图像数据
  10. 微信小程序点餐系统源码(微信点餐软件外卖系统)搭建
  11. 03-JVM内存分配机制详解
  12. realtek 8111E 网卡 修改MAC 地址
  13. SpringBoot系列 - 集成JWT实现接口权限认证
  14. 未能加载文件或程序集
  15. python音频 降噪_python降噪_python音频降噪_python图片降噪 - 云+社区 - 腾讯云
  16. OpenGL入门学习
  17. 文件变成chk如何恢复正常
  18. 高铁的速度 华为的服务
  19. 三八节买什么数码好物?三八女神节实用不吃灰的数码好物推荐
  20. ldd显示可执行模块的dependenc

热门文章

  1. PS3中文游戏合集下载
  2. 阿里云服务器之建立个人博客
  3. keil5 最新版注册机 下载
  4. 我的世界光影Java优化_教程/提高帧率 - Minecraft Wiki,最详细的官方我的世界百科...
  5. Mathtype公式编辑器常用快捷键
  6. Linux/Centos: readelf命令使用说明
  7. k2p官方改版固件v2.2
  8. 如何画好软件项目架构图?
  9. dwf怎么合成一个_cad多张图纸拆分(如何将一个有多个图的CAD文件,按图分成几个文件)...
  10. 全新UI西游H5决战天宫游戏详细图文架设教程