using System; using System.Security.Cryptography; using System.Text;namespace Test.CommonPrj { public class cls_RasEncrypt { public static readonly System.Version myVersion = new System.Version(1,0); static public byte[] RSAEncrypt(byte[] DataToEncrypt, RSAParameters RSAKeyInfo, bool DoOAEPPadding) { try { RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(); RSA.ImportParameters(RSAKeyInfo); return RSA.Encrypt(DataToEncrypt, DoOAEPPadding); } catch { return null; } } static public byte[] RSADecrypt(byte[] DataToDecrypt, RSAParameters RSAKeyInfo, bool DoOAEPPadding) { try { RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(); RSA.ImportParameters(RSAKeyInfo); return RSA.Decrypt(DataToDecrypt, DoOAEPPadding); } catch { return null; } } /// <summary> /// RSA.Encrypt /// </summary> /// <param name="DataToEncrypt"></param> /// <param name="publicKey">try 128bit bytes</param> /// <param name="exponent">any bytes</param> /// <param name="DoOAEPPadding"></param> /// <returns></returns> static public byte[] RSAEncrypt(byte[] DataToEncrypt, byte[] publicKey, byte[] exponent, bool DoOAEPPadding) { RSAParameters RSAKeyInfo = new RSAParameters(); RSAKeyInfo.Modulus = publicKey; RSAKeyInfo.Exponent = exponent; return RSAEncrypt(DataToEncrypt, RSAKeyInfo, DoOAEPPadding); } static public byte[] RSADecrypt(byte[] DataToDecrypt, byte[] publicKey, byte[] exponent, bool DoOAEPPadding) { RSAParameters RSAKeyInfo = new RSAParameters(); RSAKeyInfo.Modulus = publicKey; RSAKeyInfo.Exponent = exponent; return RSADecrypt(DataToDecrypt, RSAKeyInfo, DoOAEPPadding); } static public byte[] RSAEncrypt(byte[] DataToEncrypt, bool DoOAEPPadding) { RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(); return RSAEncrypt(DataToEncrypt,RSA.ExportParameters(true),DoOAEPPadding);
} static public byte[] RSADecrypt(byte[] DataToDecrypt, bool DoOAEPPadding) { RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(); return RSADecrypt(DataToDecrypt,RSA.ExportParameters(true),DoOAEPPadding); } } }
把一个金额或数字转换中文大写或英文大写: ------------------------------------------------------------- public class ConvCapit { public ConvCapit() { // // TODO: 在此处添加构造函数逻辑 // }
不过大多数时间是查MSDN了。
你有吗?
可以共享吗?
等待中……
所有元素的合计或最大值或最小值
----------------------------------------------
合计或最大值或最小值,一个函数返回可以返回3个值,这样做不合适,应该写成一个继承System.Collections.ArrayList的类比较好。2.要把一个数组/集合/或任意对象保存到文件中
以后需要时再从文件中读取出来
----------------------------------------------
没有必要写这么一个函数,而且这个函数缺少灵活,比如将一个字符串数组可以直接保存在一个文本文件中,但一个对象就需要序列化了,如果写也应该是一个类。
如果字符串中带有中文呢
--------------------------------------------
对于不提供对齐的控件功能的控件有用,可以先判断字符串的字节长度然后通过字符串实例的PadLeft和PadRight,我没写过,因为.net里的控件一般都提供对齐。4.给你一个以 市尺/市寸 为单位的长度值
转换成相应的 英寸或者 光年
-----------------------------------------
没写过,但这种东西也应该是个类。
1.要计算一个 整型/长整形/浮点数/金额 类型数组中
所有元素的合计或最大值或最小值是指写几个函数来完成这些功能,不是说一个函数,比方Sum(),Max(),Min()下面的交换也是一样的
以及经过自己包装的控件~~
比如支持复杂分页功能的DataGrid,在客户端运行的日历控件(这种网上好象都找的到),
实现身份验证的一组登录用文本框
using System.Security.Cryptography;
using System.Text;namespace Test.CommonPrj
{
public class cls_RasEncrypt
{
public static readonly System.Version myVersion = new System.Version(1,0); static public byte[] RSAEncrypt(byte[] DataToEncrypt, RSAParameters RSAKeyInfo, bool DoOAEPPadding) {
try {
RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
RSA.ImportParameters(RSAKeyInfo);
return RSA.Encrypt(DataToEncrypt, DoOAEPPadding);
}
catch {
return null;
}
} static public byte[] RSADecrypt(byte[] DataToDecrypt, RSAParameters RSAKeyInfo, bool DoOAEPPadding) {
try {
RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
RSA.ImportParameters(RSAKeyInfo);
return RSA.Decrypt(DataToDecrypt, DoOAEPPadding);
}
catch {
return null;
}
} /// <summary>
/// RSA.Encrypt
/// </summary>
/// <param name="DataToEncrypt"></param>
/// <param name="publicKey">try 128bit bytes</param>
/// <param name="exponent">any bytes</param>
/// <param name="DoOAEPPadding"></param>
/// <returns></returns>
static public byte[] RSAEncrypt(byte[] DataToEncrypt, byte[] publicKey, byte[] exponent, bool DoOAEPPadding) {
RSAParameters RSAKeyInfo = new RSAParameters();
RSAKeyInfo.Modulus = publicKey;
RSAKeyInfo.Exponent = exponent; return RSAEncrypt(DataToEncrypt, RSAKeyInfo, DoOAEPPadding);
} static public byte[] RSADecrypt(byte[] DataToDecrypt, byte[] publicKey, byte[] exponent, bool DoOAEPPadding) {
RSAParameters RSAKeyInfo = new RSAParameters();
RSAKeyInfo.Modulus = publicKey;
RSAKeyInfo.Exponent = exponent; return RSADecrypt(DataToDecrypt, RSAKeyInfo, DoOAEPPadding);
} static public byte[] RSAEncrypt(byte[] DataToEncrypt, bool DoOAEPPadding) {
RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(); return RSAEncrypt(DataToEncrypt,RSA.ExportParameters(true),DoOAEPPadding);
} static public byte[] RSADecrypt(byte[] DataToDecrypt, bool DoOAEPPadding) {
RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(); return RSADecrypt(DataToDecrypt,RSA.ExportParameters(true),DoOAEPPadding);
}
}
}
-------------------------------------------------------------
public class ConvCapit
{
public ConvCapit()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
private static readonly string cnNumber = "零壹贰叁肆伍陆柒捌玖";
private static readonly string cnUnit = "分角元拾佰仟万拾佰仟亿拾佰仟兆拾佰仟";
private static readonly string[] enSmallNumber = {"","ONE","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","TEN", "ELEVEN","TWELVE","THIRTEEN","FOURTEEN","FIFTEEN","SIXTEEN","SEVENTEEN","EIGHTEEN","NINETEEN"};
private static readonly string[] enLargeNumber = {"TWENTY","THIRTY","FORTY","FIFTY","SIXTY","SEVENTY","EIGHTY","NINETY"};
private static readonly string[] enUnit = {"","THOUSAND","MILLION","BILLION","TRILLION"}; // 最大转化金额 9999999999999999.99 (16位整数位,2位小数位)
// 方法返回值 转换成功则返回非零长字串,否则返回零长字串 // 静态英文转换方法 string GetEnString(string MoneyString)
// 最大转化金额 999999999999999.99 (15位整数位,2位小数位)
// 方法返回值 转换成功则返回非零长字串,否则返回零长字串
// 以下是货币金额中文大写转换方法
public static string ConvertNumberToChineseMoneyString(string MoneyString)
{
string [] tmpString = MoneyString.Split('.');
string intString = MoneyString; // 默认为整数
string decString = ""; // 保存小数部分字串
string rmbCapital = ""; // 保存中文大写字串
int k;
int j;
int n; if (tmpString.Length>1)
{
intString = tmpString[0]; // 取整数部分
decString = tmpString[1]; // 取小数部分
}
decString += "00";
decString = decString.Substring (0,2); // 保留两位小数位
intString += decString; try
{
k = intString.Length -1;
if (k>0 && k<18)
{
for (int i=0;i<=k;i++)
{
j=(int)intString[i]-48;
// rmbCapital = rmbCapital + cnNumber[j] + cnUnit[k-i]; // 供调试用的直接转换
n = i+1 >= k ? (int)intString[k]-48:(int)intString[i+1]-48; // 等效于 if( ){ }else{ }
if (j==0)
{
if(k-i==2 || k-i==6 || k-i==10 || k-i==14)
{
rmbCapital += cnUnit[k-i];
}
else
{
if (n != 0)
{
rmbCapital += cnNumber[j];
}
}
}
else
{
rmbCapital = rmbCapital + cnNumber[j] + cnUnit[k-i];
}
} rmbCapital = rmbCapital.Replace ("兆亿万","兆");
rmbCapital = rmbCapital.Replace ("兆亿","兆");
rmbCapital = rmbCapital.Replace ("亿万","亿");
rmbCapital = rmbCapital.TrimStart('元');
rmbCapital = rmbCapital.TrimStart('零'); return rmbCapital;
}
else
{
return ""; // 超出转换范围时,返回零长字串
}
}
catch
{
return ""; // 含有非数值字符时,返回零长字串
}
}
// 以下是货币金额英文大写转换方法
public static string ConvertNumberToEnglishMoneyString(string MoneyString)
{
string [] tmpString = MoneyString.Split('.');
string intString = MoneyString; // 默认为整数
string decString = ""; // 保存小数部分字串
string engCapital = ""; // 保存英文大写字串
string strBuff1;
string strBuff2;
string strBuff3;
int curPoint;
int i1;
int i2;
int i3;
int k;
int n;
if (tmpString.Length >1)
{
intString = tmpString[0]; // 取整数部分
decString = tmpString[1]; // 取小数部分
}
decString += "00";
decString = decString.Substring (0,2); // 保留两位小数位
try
{
// 以下处理整数部分
curPoint = intString.Length-1;
if (curPoint>-1 && curPoint<15)
{
k = 0;
while(curPoint>=0)
{
strBuff1 = "";
strBuff2 = "";
strBuff3 = "";
if (curPoint>=2)
{
n=int.Parse(intString.Substring(curPoint-2,3));
if (n !=0)
{
i1 = n/100; // 取佰位数值
i2 = (n-i1*100)/10; // 取拾位数值
i3 = n-i1*100-i2*10; // 取个位数值
if (i1 !=0)
{
strBuff1 = enSmallNumber[i1] + " HUNDRED ";
}
if (i2!=0)
{
if (i2==1)
{
strBuff2 = enSmallNumber[i2*10+i3] + " ";
}
else
{
strBuff2 = enLargeNumber[i2-2] + " ";
if (i3 !=0)
{
strBuff3 = enSmallNumber[i3] + " ";
}
}
}
else
{
if (i3 !=0)
{
strBuff3 = enSmallNumber[i3] + " ";
}
}
engCapital = strBuff1 + strBuff2 + strBuff3 + enUnit[k] + " " + engCapital;
}
}
else
{
n = int.Parse(intString.Substring(0,curPoint+1));
if (n !=0)
{
i2 = n/10; // 取拾位数值
i3 = n-i2*10; // 取个位数值
if (i2!=0)
{
if (i2==1)
{
strBuff2 = enSmallNumber[i2*10+i3] + " ";
}
else
{
strBuff2 = enLargeNumber[i2-2] + " ";
if (i3 !=0)
{
strBuff3 = enSmallNumber[i3] + " ";
}
}
}
else
{
if (i3 !=0)
{
strBuff3 = enSmallNumber[i3] + " ";
}
}
engCapital = strBuff2 + strBuff3 + enUnit[k] + " " + engCapital;
}
}
++k;
curPoint -= 3;
}
engCapital = engCapital.TrimEnd();
}
// 以下处理小数部分
strBuff2 = "";
strBuff3 = "";
n = int.Parse(decString);
if (n !=0)
{
i2 = n/10; // 取拾位数值
i3 = n-i2*10; // 取个位数值
if (i2!=0)
{
if (i2==1)
{
strBuff2 = enSmallNumber[i2*10+i3] + " ";
}
else
{
strBuff2 = enLargeNumber[i2-2] + " ";
if (i3 !=0)
{
strBuff3 = enSmallNumber[i3] + " ";
}
}
}
else
{
if (i3 !=0)
{
strBuff3 = enSmallNumber[i3] + " ";
}
} // 将小数字串追加到整数字串后
if (engCapital.Length>0)
{
engCapital = engCapital + " AND CENTS " + strBuff2+strBuff3; // 有整数部分时
}
else
{
engCapital = "CENTS " + strBuff2 + strBuff3; // 只有小数部分时
}
} engCapital = engCapital.TrimEnd();
return engCapital;
}
catch
{
return ""; // 含非数字字符时,返回零长字串
}
} }
所有的资源也都放在这个类里,比如ResourceManager类。
还会有一些自己的Exception,这个会单独建立一个文件,Exception的Handler也会单独建立一个文件。
楼主说的那些方法,如果用到的话,会在Util类中实现的。但一般我用不到。
class function
{
public:
CString static GetText(HWND hwnd,int nid)
{ LPTSTR str=new char [32];
GetDlgItemText(hwnd,nid,str,32);
return str;
}
int static bitset(int num,int bit){int bit_value[]={1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,131072,262144,524288,1048576,2097152,4194304,8388608,16777216,33554432,67108864,134217728,268435456,536870912,1073741824,2147483648};return num|bit_value[bit-1];}
int static bittest(int num,int bit) {
if(num>>(bit-1)&0x1==1)return 1;elsereturn 0;}void static fileopen(CSortListCtrl *plistbox)
{
CStdioFile file1;
CString str;
CFileDialog dlg(true,NULL,NULL,NULL,"*.arictext|*.arictext|All files|*.*||",NULL);
if(dlg.DoModal()==IDOK)
{
str=dlg.GetPathName();
if(str.Find(".arictext")==-1)
str=str+".arictext";
if(!file1.Open(str,CFile::modeRead))
{
MessageBox(NULL,"文件打开出错,请确保路径正确,并且有足够权限!","注意",0);}
CString strr;BOOL noend=file1.ReadString(strr);
plistbox->DeleteAllItems();
while(noend)
{
char fenlichar[8][32];for(int i=0;i<7;i++)
{
int j;
j=strr.Find(" ");
memset(fenlichar[i],0,32);
strcpy(fenlichar[i],(strr.Left(j)).GetBuffer(32));strr=strr.Mid(j+1);
}
strcpy(fenlichar[7],strr.GetBuffer(0));
plistbox->AddItem(fenlichar[0],fenlichar[1],fenlichar[2],fenlichar[3],fenlichar[4],fenlichar[5],fenlichar[6],fenlichar[7]);noend=file1.ReadString(strr);
}
}}void static fileopen2(CSortListCtrl *plistbox)
{
CStdioFile file1;
CString str;
CFileDialog dlg(true,NULL,NULL,NULL,"*.arictext|*.arictext|All files|*.*||",NULL);
if(dlg.DoModal()==IDOK)
{
str=dlg.GetPathName();
if(str.Find(".arictext")==-1)
str=str+".arictext";
if(!file1.Open(str,CFile::modeRead))
{
MessageBox(NULL,"文件打开出错,请确保路径正确,并且有足够权限!","注意",0);}
CString strr;BOOL noend=file1.ReadString(strr);
plistbox->DeleteAllItems();
while(noend)
{
char fenlichar[11][32];for(int i=0;i<10;i++)
{
int j;
j=strr.Find(" ");
memset(fenlichar[i],0,32);
strcpy(fenlichar[i],(strr.Left(j)).GetBuffer(32));strr=strr.Mid(j+1);
}
strcpy(fenlichar[10],strr.GetBuffer(0));
plistbox->AddItem(fenlichar[0],fenlichar[1],fenlichar[2],fenlichar[3],fenlichar[4],fenlichar[5],fenlichar[6],fenlichar[7],fenlichar[8],fenlichar[9],fenlichar[10]);noend=file1.ReadString(strr);
}
}}
CString static fileopen3(CString filename)
{
CStdioFile file1;CFileDialog dlg(true,NULL,NULL,NULL,"*.arictext|*.arictext|All files|*.*||",NULL);
if(!file1.Open(filename,CFile::modeRead))
{
MessageBox(NULL,"文件打开出错,请确保路径正确,并且有足够权限!","注意",0);}
CString strr;if(file1.ReadString(strr))
return strr;
else
return "";}
void static filesave(CSortListCtrl *plistbox)
{ CStdioFile file1;
CString str;
CFileDialog dlg(false,NULL,NULL,NULL,"*.arictext|*.arictext|All files|*.*||",NULL);
if(dlg.DoModal()==IDOK)
{
str=dlg.GetPathName();
if(str.Find(".arictext")==-1)
str=str+".arictext";
if(!file1.Open(str,CFile::modeCreate|CFile::modeWrite))
{
MessageBox(NULL,"文件打开出错,请确保路径正确,并且有足够权限!","注意",0);}
CString strr;
CString ff;
for(int j=0;j<plistbox->GetItemCount();j++)
{
strr="";for(int i=0;i<11;i++)
strr=strr+plistbox->GetItemText(j,i)+" ";
strr+="\n";
file1.SeekToEnd();
file1.Write(strr,strr.GetLength());}
}}
void static SetDlgItemFloat(HWND parent,int nid,float f)
{
CString str;
str.Format("%f",f);
SetDlgItemText(parent,nid,str);}float static GetDlgItemFloat(HWND parent,int nid)
{char str[32]="";
GetDlgItemText(parent,nid,str,32);
if(strcmp(str,"")==0)
str="0";
float a;
sscanf(str.,"%f",&a);
return a;}void static filesave(char * filename,char *recstr)
{ CStdioFile file1;
MessageBox(NULL,recstr,"注意",0);if(!file1.Open(filename,CFile::modeNoTruncate|CFile::modeCreate|CFile::modeWrite))
{
MessageBox(NULL,"文件打开出错,请确保路径正确,并且有足够权限!","注意",0);}file1.SeekToEnd();
file1.Write(recstr,strlen(recstr));
}
};