这里是base64decode和urldecode,Md5在附件中。因为我是在后台所以需要解码:
string Base64Decode(const char* Data,int DataByte,int& OutByte)
{
//解码表
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'
};
//返回值
string strDecode;
int nValue;
int i= 0;
while (i < DataByte)
{
if (*Data != '\r' && *Data!='\n')
{
nValue = DecodeTable[*Data++] << 18;
nValue += DecodeTable[*Data++] << 12;
strDecode+=(nValue & 0x00FF0000) >> 16;
OutByte++;
if (*Data != '=')
{
nValue += DecodeTable[*Data++] << 6;
strDecode+=(nValue & 0x0000FF00) >> 8;
OutByte++;
if (*Data != '=')
{
nValue += DecodeTable[*Data++];
strDecode+=nValue & 0x000000FF;
OutByte++;
}
}
i += 4;
}
else// 回车换行,跳过
{
Data++;
i++;
}
}
return strDecode;
}
char * Cgi_urldecode(char * url)
{
int len = strlen(url);
char *dest = url;
char *data = url;
while (len--) {
if (*data == '+')
*dest = ' ';
else if (*data == '%' && len >= 2 && isxdigit((int) *(data + 1)) && isxdigit((int) *(data + 2))) {
*dest = (char) htoi(data + 1);
data += 2;
len -= 2;
} else
*dest = *data;
data++;
dest++;
}
*dest = '\0';
return url ;
}
int htoi(char *s)
{
int value;
int c;
c = ((unsigned char *)s)[0];
if (isupper(c))
c = tolower(c);
value = (c >= '0' && c <= '9' ? c - '0' : c - 'a' + 10) * 16;
c = ((unsigned char *)s)[1];
if (isupper(c))
c = tolower(c);
value += c >= '0' && c <= '9' ? c - '0' : c - 'a' + 10;
return (value);
}
分享到:
相关推荐
5. 可能还包含其他辅助方法,如检查字符串是否为Base64编码,或者处理URL安全的Base64(即替换'/'为'_','+'为'-')。 在描述中提到了"导入时别忘了导入jQuery",这意味着这个Base64插件可能依赖于jQuery库。jQuery...
考虑到浏览器兼容性和性能优化,开发者可能会选择自定义Base64库,如压缩包中的`Base64.js`。这个库提供了更全面的功能,包括URL安全的Base64编码(替换"+"和"/"为"-"和 "_")以及对非ASCII字符的支持。 ```...
5. **自定义Base64编码器和解码器** 如果你需要更定制化的Base64编码,可以创建自己的编码器和解码器。例如,如果你想改变编码时的分隔符或者不希望有填充字符,可以这样做: ```java import java.util.Base64; ...
在`Base64Decode.java`中,程序接收已经Base64编码的字符串,然后使用`Base64.getDecoder().decode()`方法将字符串解码回原始的二进制数据。解码后,原始数据可以被写入文件或进行其他处理。 Base64编码的效率较低...
5. **性能考虑**:虽然自定义的Base64函数方便实用,但在大型项目中,可能会考虑使用更高效的解决方案,如.NET Framework或JScript .NET,它们提供了内置的Base64编码和解码支持。 6. **安全性**:在使用Base64编码...
- Base64编码广泛应用于URL、电子邮件、XML、JSON等场景,因为它可以将二进制数据转换为纯文本格式。 - 在实现中,还可以考虑使用动态内存分配以处理任意大小的数据,或者增加线程安全支持,使其适用于多线程环境...
使用这个JavaScript Base64库时,开发者通常可以通过简单的API调用来完成编码和解码操作,比如`Base64.encode()`和`Base64.decode()`。这样的库在处理图像、XML、JSON等数据格式在网络上传输时非常有用,因为这些...
它将任何可打印的ASCII字符转换为一个由64个字符组成的特定字符集,包括A-Z、a-z、0-9、"+"和"/",以及在URL编码中用到的"="作为填充字符。在JavaScript中,base64编码和解码可以通过内置的`btoa()`和`atob()`函数...
总的来说,Base64在Delphi中实现并不复杂,主要涉及到字符串与字节序列之间的转换。ksaiy的代码示例是一个很好的学习资源,可以帮助开发者更好地理解和应用Base64编码。在实际项目中,除了基本的编码和解码功能外,...
$decrypted_tb = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($crypttext_tb), MCRYPT_MODE_CBC, md5(md5($key))), "\0"); ``` 这里的`rtrim`函数用于去除解密后可能存在的额外空字符。 ...
f.write(base64.b64decode(img_data)) f.close() ``` 至此,你就成功地使用Python和百度AI的API将一张人像照片转换成了动漫风格。这个过程可以应用于批量处理大量图片,例如创建个性化的动漫头像或制作有趣的艺术...
但是,这种编码方式在PHP中用`urldecode()`或`base64_decode()`并不能直接解码。因此,作者提出了一个自定义的PHP函数`js_unescape()`来处理这种特殊编码。 `js_unescape()`函数的核心逻辑是判断字符串中是否以`%u`...
byte[] byte_content = Base64.decode(contentBase64); // 解码为字节数组 ``` 5. **生成文件**: 最后,使用`byte_content`生成文件。这里创建一个名为`generateFile()`的方法,接受字节数组、目标文件路径和...
4 <br>0008 为程序设置版本和帮助信息 4 <br>0009 设置Windows应用程序启动窗体 5 <br>0010 设置Web应用程序起始页 5 <br>0011 如何设置程序的出错窗口 5 <br>0012 如何进行程序调试 6 ...