开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
捐赠
捐赠前请先登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
1 Star 2 Fork 3

厚德菌/cpp_utils

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
文件
master
分支 (1)
master
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
项目仓库所选许可证以仓库主分支所使用许可证为准
master
分支 (1)
master
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
master
分支 (1)
master
cpp_utils
/
based
/
code_decode.h
cpp_utils
/
based
/
code_decode.h
code_decode.h 2.58 KB
一键复制 编辑 原始数据 按行查看 历史
厚德菌 提交于 2021年02月15日 08:33 +08:00 . First commit.
//这是一个字符串编解码类。目前支持:url编码、解码。
#pragma once
#include<iostream>
namespace based
{
class code_decode
{
public:
static unsigned char to_hex(const unsigned char &x)
{
return x > 9 ? x - 10 + 'A' : x + '0';
}
static unsigned char from_hex(const unsigned char &x)
{
return isdigit(x) ? x - '0' : x - 'A' + 10;
}
static std::string url_encode(const char *sIn)
{
std::string sOut;
for (size_t ix = 0; ix < strlen(sIn); ix++)
{
unsigned char buf[4];
memset(buf, 0, 4);
if (isalnum((unsigned char)sIn[ix]))
{
buf[0] = sIn[ix];
}
else
{
buf[0] = '%';
buf[1] = to_hex((unsigned char)sIn[ix] >> 4);
buf[2] = to_hex((unsigned char)sIn[ix] % 16);
}
sOut += (char *)buf;
}
return sOut;
};
static std::string url_decode(const char *sIn)
{
std::string sOut;
for (size_t ix = 0; ix < strlen(sIn); ix++)
{
unsigned char ch = 0;
if (sIn[ix] == '%')
{
ch = (from_hex(sIn[ix + 1]) << 4);
ch |= from_hex(sIn[ix + 2]);
ix += 2;
}
else if (sIn[ix] == '+')
{
ch = ' ';
}
else
{
ch = sIn[ix];
}
sOut += (char)ch;
}
return sOut;
}
/*
// parameter(s): [OUT] pbDest - 输出缓冲区
// [IN] pbSrc - 字符串
// [IN] nLen - 16进制数的字节数(字符串的长度/2)
// return value:
// remarks : 将字符串转化为16进制数
*/
static void str_to_hex(unsigned char *pbDest, const unsigned char *pbSrc, int nLen)
{
char h1, h2;
BYTE s1, s2;
int i;
for (i = 0; i < nLen; i++)
{
h1 = pbSrc[2 * i];
h2 = pbSrc[2 * i + 1];
s1 = toupper(h1) - 0x30;
if (s1 > 9)
s1 -= 7;
s2 = toupper(h2) - 0x30;
if (s2 > 9)
s2 -= 7;
pbDest[i] = s1 * 16 + s2;
}
}
/*
// [IN] pbSrc - 输入16进制数的起始地址
// [IN] nLen - 16进制数的字节数
// return value: 返回转化出来的字符串
// remarks : 将16进制数转化为字符串
*/
static std::string hex_to_str(const unsigned char *pbSrc, int nLen)
{
char ddl, ddh;
char* pbDest = new char[nLen * 2 + 1]{};
std::string str;
for (int i = 0; i < nLen; i++)
{
ddh = 48 + pbSrc[i] / 16;
ddl = 48 + pbSrc[i] % 16;
if (ddh > 57) ddh = ddh + 7;
if (ddl > 57) ddl = ddl + 7;
pbDest[i * 2] = ddh;
pbDest[i * 2 + 1] = ddl;
}
pbDest[nLen * 2] = '0円';
str.append(pbDest);
delete[] pbDest;
return str;
}
};
}
//
// void main()
// {
// char *p = "测试短信A01【潍坊科技局】";
// std::string url = based::code_decode::url_encode(p);
// std::string txt = based::code_decode::url_decode(url.c_str());
// system("pause");
// }
Loading...
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

简介

取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/andy-ho/cpp_utils.git
git@gitee.com:andy-ho/cpp_utils.git
andy-ho
cpp_utils
cpp_utils
master
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /