使用GTMBase64编码解码字符串

简介: 使用GTMBase64编码解码字符串说明:BASE64不是用来加密的。你看看经过BASE64编码后的字符串,全部都是由标准键盘上面的常规字符组成,这样编码后的字符串在网关之间传递不会产生UNICODE字符串不能识别或者丢失的现象。

使用GTMBase64编码解码字符串


说明:BASE64不是用来加密的。你看看经过BASE64编码后的字符串,全部都是由标准键盘上面的常规字符组成,这样编码后的字符串在网关之间传递不会产生UNICODE字符串不能识别或者丢失的现象。你再仔细研究下EMAIL就会发现其实EMAIL就是用base64编码过后再发送的。然后接收的时候再还原。
    还有一种情况下用BASE64编码也很好,比如一个图片文件,或者其他任何二进制文件。我可以把它编码成字符串。这样用XML或者数据库就能直接以文本的方式来存储这些文件了。
<pre id="answer-content-418531940" class="answer-text mb-10" name="code" style="white-space: pre-wrap; word-wrap: break-word; margin-top: 0px; margin-bottom: 10px; padding: 0px; font-family: arial, 'courier new', courier, 宋体, monospace; background-color: rgb(255, 255, 255);">base64是一种编码方式,编码算法完全公开,所以逆向解码即可

 
  
</pre><pre id="best-content-419398544" class="best-text mb-10" name="code" style="white-space: pre-wrap; word-wrap: break-word; margin-top: 0px; margin-bottom: 10px; padding: 0px; font-family: arial, 'courier new', courier, 宋体, monospace; color: rgb(51, 51, 51); line-height: 24px; background-color: rgb(241, 254, 221);"><p style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; font-family: Arial; line-height: 26px;">使用GTMBase64需要在工程中加入三个文件</p><div class="cnblogs_code" style="font-family: Arial; line-height: 26px;"><pre style="white-space: pre-wrap; word-wrap: break-word;"><a target=_blank href="http://code.google.com/p/google-toolbox-for-mac/source/browse/trunk/GTMDefines.h?r=87" target="_blank" style="color: rgb(255, 153, 0); text-decoration: none;">GTMDefines.h</a>
<a target=_blank href="http://code.google.com/p/google-toolbox-for-mac/source/browse/trunk/Foundation/GTMBase64.h?r=87" target="_blank" style="color: rgb(255, 153, 0); text-decoration: none;">GTMBase64.h</a>
<a target=_blank href="http://code.google.com/p/google-toolbox-for-mac/source/browse/trunk/Foundation/GTMBase64.m?r=87" target="_blank" style="color: rgb(255, 153, 0); text-decoration: none;">GTMBase64.m</a>

你可以在这里找到这三个文件
<a target=_blank href="http://code.google.com/p/google-toolbox-for-mac/source/browse/trunk/Foundation/?r=87" style="color: rgb(255, 153, 0); text-decoration: none;">http://code.google.com/p/google-toolbox-for-mac/source/browse/trunk/Foundation/?r=87</a>

 
 
<p style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; font-family: Arial; line-height: 26px;">示例代码:</p><div class="cnblogs_code" style="font-family: Arial; line-height: 26px;"><div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><a target=_blank title="复制代码" style="color: rgb(255, 153, 0);"><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码" style="border: none; max-width: 100%;" /></a></span></div><pre style="white-space: pre-wrap; word-wrap: break-word;"><span style="color: rgb(0, 0, 255);">#import</span> <span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">GTMBase64.h</span><span style="color: rgb(128, 0, 0);">"</span>

- (<span style="color: rgb(0, 0, 255);">void</span>)testExample
{
    NSData *data = [<span style="color: rgb(128, 0, 0);">@"</span><span style="color: rgb(128, 0, 0);">HelloWorld</span><span style="color: rgb(128, 0, 0);">"</span> dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
    NSString* encoded = [[NSString alloc] initWithData:[GTMBase64 encodeData:data] encoding:NSUTF8StringEncoding]; 
    NSLog(<span style="color: rgb(128, 0, 0);">@"</span><span style="color: rgb(128, 0, 0);">encoded:%@</span><span style="color: rgb(128, 0, 0);">"</span>, encoded);
    NSString* decoded = [[NSString alloc] initWithData:[GTMBase64 decodeString:encoded] encoding:NSUTF8StringEncoding];
    NSLog(<span style="color: rgb(128, 0, 0);">@"</span><span style="color: rgb(128, 0, 0);">decoded:%@</span><span style="color: rgb(128, 0, 0);">"</span>, decoded);
    [encoded release];
    [decoded release];
}
复制代码

 

输出:

2012-04-10 12:13:10.121 fs_test[7370:b603] encoded:SGVsbG9Xb3JsZA==
2012-04-10 12:13:10.122 fs_test[7370:b603] decoded:HelloWorld

 
 
</pre><pre id="best-content-419398544" class="best-text mb-10" name="code" style="white-space: pre-wrap; word-wrap: break-word; margin-top: 0px; margin-bottom: 10px; padding: 0px; font-family: arial, 'courier new', courier, 宋体, monospace; color: rgb(51, 51, 51); line-height: 24px; background-color: rgb(241, 254, 221);">使用示例:
引入头文件:
#import "GTMBase64.h"
UIImage *image;
NSData *data= UIImagePNGRepresentation(image);
    if([data length]>0){
        data = [GTMBase64 encodeData:data];                 //编码
    }
   if([data length]>0){
        data = [GTMBase64 decodeData:data];                  //解码
   }
相关文章
|
JavaScript 前端开发 Java
Unicode转义(\uXXXX)的编码和解码
  在涉及Web前端开发时, 有时会遇到\uXXXX格式表示的字符, 其中XXXX是16进制数字的字符串表示形式, 在js中这个叫Unicode转义字符, 和\n \r同属于转义字符. 在其他语言中也有类似的, 可能还有其它变形的格式.
2366 0
|
3月前
leetcode-394:字符串解码
leetcode-394:字符串解码
24 0
|
4月前
|
开发框架 .NET C#
C# | [二进制字符串] 与 [字节数组] 互相转换,一行代码就搞定! - CodePlus系列
开发中有时需要将二进制数据转换为字符串或相反。虽然.NET提供了一些用于二进制数据操作的类库,但是它们的使用有时候会比较繁琐。STTech.CodePlus是一个.NET扩展库,它提供了很多实用的扩展方法,可以帮助我们更方便地进行二进制数据操作。 在本文中,我们将介绍如何使用STTech.CodePlus扩展库实现二进制字符串和字节数组的快速互相转换。
68 0
|
9月前
|
PHP 数据安全/隐私保护
PHP函数学习:16进制ASCII转化为字符串加密解密
PHP函数学习:16进制ASCII转化为字符串加密解密
230 0
LeetCode 394. 字符串解码
LeetCode 394. 字符串解码
73 0
LeetCode 394. 字符串解码
Python__24--格式化字符串与字符串的编码、解码转换
驻留机制、格式化字符串与字符串的编码、解码转换
|
存储 开发者 Python
|
开发者 Python
字符串的编码|学习笔记
快速学习字符串的编码
67 0
|
算法 Java 大数据
提升Java字符串编码解码性能的技巧
常见的字符串编码有LATIN1、UTF-8、UTF-16、GB18030,他们各有各的特点,且之间的转换比较复杂。本文将为大家介绍提升Java字符串编码解码性能的技巧。
提升Java字符串编码解码性能的技巧