最近的文章列表

[转]C#实现Base64编码与解码
一、编码规则Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码。它将需要编码的数据拆分成字节数组。以3个字节为一组。按顺序排列24 位数据,再把这24位数据分成4组,即每组6位。再在每组的的最高位前补两个0凑足一个字节。这样就把一个3字节为一组的数据重新编码成了4个字节。当所要编码的数据的字节数不是3的整倍数,也就是说在分组时最后一组不够3个字节。这时在最后一组填充1到2个0字节。并在最后编码完成后在结尾添加1到2个 =。例:将对ABC进行BASE64编码:1、首先取ABC对应的ASCII码值。A(65)B(66)C(67);2、再取二进制值A(01000001)B(01000010)C(01000011);3、然后把这三个字节的二进制码接起来(0100000101
2011/11/4 Comments:
Asp.Net图片base64编码相互转换 base64编码显示图片
点击js按钮进行ajax请求返回图片的字节流,怎样在页面上进行显示呢?如果是2进制流基本没有办法。如果是base64字符串流,可以使用<img src="data:image/gif;base64,base64图片编码"/>如果能将图片转换为base64编码,结合图片的新写法data:images/gif;base64,base64数据,就能使用ajax请求动态页获取base64编码,然后设置img为base64编码即可实现ajax无刷新获取图片信息了。  一般意义上是不需要使用ajax来获取图片信息的,用JavaScript设置img标签的src属性即可实现无刷新获取到图片,只是浏览器会出现进度条而已。如果要想使用ajax来无刷新获取图片信息,并且更新img
2011/11/4 Comments:
C#向C++封送结构体数组
在使用第三方的非托管API时,我们经常会遇到参数为指针或指针的指针这种情况,一般我们会用IntPtr指向我们需要传递的参数地址; 但是当遇到这种一个导出函数时,我们如何正确的使用IntPtr呢,extern "C" __declspec(dllexport) int GetClass(Class pClass[50]) ; 由于这种情况也经常可能遇到,所以我制作了2个示例程序来演示下如何处理这种非托管函数的调用! 首先创建一个C++ 的DLL 设置一个如上的导出函数 1 #include <Windows.h> 2 #include <stdio.h> 3 4 typedef struct Student 5 { 6 char
2011/9/28 Comments:
C#调用C++ DLL 参数传递时:无法封送处理泛型类型
COM 模型不支持泛型类型的概念。 因此,泛型类型不能直接用于 COM 互操作。下列不受支持的操作将失败,并显示 E_NOINTERFACE 错误:从 COM 访问泛型接口。访问从泛型类派生的非泛型类的类接口。为泛型类生成类接口。 例如,不能为 MyGenericType<T> 类生成 _MyGenericType 接口。您可以使用非泛型基接口间接访问泛型类。 例如,考虑以下类型:[C#]other class MyClass <T> : IMyClass, IEnumerable<int>{&hellip;}COM 客户端可以使用 IMyClass 接口调用此类型的实例,但调用 _MyClass、_MyClass <T> 或 IEnu
2011/9/28 Comments:
C++与C#对常用数据结构封装的对比(STL vs System.Collections.Gener
DotNet下的泛型容器类封装在System.Collections.Generic,使用的十分广泛。C++则靠STL实现了泛型容器与算法。下面对二者做一个对比,只谈用法,不深究原理。对比的内容有数组、链表和字典三种结构。一、数组C#使用List<T>,C++用的是std::vector<T>,内部实现都是数组,也就是一块连续的内存区域,插入、删除操作慢,随机访问速度快。操作C++(STL)C#(.net)说明包含#include <vector>using System.Collections.Generic;C++中也可以using namespace std;声明std::vector<int> array;List<int>
2011/9/28 Comments:
msxml3.dll 错误 800c0005系统未找到指定的资源 解决方案总结
msxml3.dll (0x800C0005)系统未找到指定的资源。/Function.asp, 第 10 行   这个情况以前也遇到过,一般出现在采集信息或用XMLHTTP静态更新网页的时候会出现这个问题,以前出现类似的错误我都是用   set objXmlHttp =Server.CreateObject("Microsoft.XMLHTTP")’一般在msxml2.6以下版本使用   ’ set objXmlHttp =Server.CreateObject("MSXML2.XMLHTTP") ’受msxml3.dll+支持   替换着使用,现在却怎么都报错。   搜索了网上我所知道所有的技术论坛和搜索引擎,引起这样的问题可能存在多种情况,下面总
2011/9/26 Comments:
如何获得枚举中的值
C-sharp代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { //获得枚举名 Console.WriteLine(TaskStatus.Complete); //获得枚举中的值 Console.WriteLine((int)Ta
2011/9/15 Comments:
HttpContext.Cache和HttpRuntime.Cache
Asp.Net中可以方便的使用缓存,对于Cache,一般有两种方式调用:HttpContext.Cache和HttpRuntime.Cache。那么这两种Cache有什么区别呢?先来看看Msdn上的注释:HttpRuntime.Cache:获取当前应用程序的 Cache。HttpContext.Cache:为当前 HTTP 请求获取 Cache 对象。那么是不是说对于HttpRuntime.Cache就是应用程序级,而HttpContext.Cache则是针对每个用户的呢?NO,而实际上,两者调用的是同一个对象。他们的区别仅仅在于调用方式不一样(就我所知)。事实胜过雄辩,写个例子来证实一下(限于篇幅仅贴出关键代码,完整代码见附件WebDemo.rar): /**//// <
2011/8/29 Comments:
CACHE生命周期
在ASP.NET中,有很多种保存信息的内置对象,如:Application,Session,Cookie,ViewState和Cache等。下面分别介绍它们的用法和区别。方法信息量大小作用域和保存时间应用范围保存位置Application任意大小整个应用程序的生命期整个应用程序/所有用户服务器端Cache任意大小可以根据需要设定整个应用程序/所有用户服务器端Session小量,简单的数据用户活动时间+一段延迟时间(一般为20分钟)单个用户服务器端Cookie小量,简单的数据可以根据需要设定单个用户客户端Viewstate小量,简单的数据一个Web页面的生命期单个用户客户端隐藏域小量,简单的数据一个Web页面的生命期单个用户客户端查询字符串小量,简单的数据直到下次页面跳转请求单个用户客户端 1
2011/8/29 Comments:
C#怎样去掉定长字符串末尾的“Null”字符?
问题:比如你指定的字符串长度是256,那么返回值不足256字节的就会用null填充(而不是用空格填充),怎样去除多出来的Null字符,只保留有效字符串呢?答案:用Format()函数就行了,format()是可以过滤掉null,最快的解决办法 判断是否为chr(0)嗯,我发现如果用format函数去除Null字符,则字串的开始几个字母不能是字母和数字混合的类型,如果是的话,Null不会被去除。看来还是用chr(0)循环合适。public struct Camnpr{[MarshalAs(UnmanagedType.ByValArray, SizeConst = 37)]//c#在与c++/c 的dll交互时,如果返回的值不过定长,c#会自动填补NULL来处理。public byte[] UI
2011/8/1 Comments: