2009-12-24 21:15:41
TURBO C 2.0 文件分类
·原创·
网上下载TURBO C 2.0很混乱,一直想把她整理一下,使各个实例分开,各个不同部分分开。断断续续花了很长时间,到今天终于整理完了。发帖出来给大家看看。有需要的可以看看。有错误的地方还请大家不吝指正。
卷 DATAPART1 的文件夹 PATH 列表
卷序列号码为 000007C0 0027:0EA9
D:.
│ Tree_Of_TC.txt
│ xxxxxx.txt
│
├─BGI
│ ATT.BGI
│ BGIDEMO.C
│ BGIOBJ.EXE
│ CGA.BGI
│ EGAVGA.BGI
│ GOTH.CHR
│ HERC.BGI
│ IBM8514.BGI
│ LITT.CHR
│ PC3270.BGI
│ SANS.CHR
│ ......
学了C然后C++,然后MFC/Windows,然后是C#,其中数据类型很多,由基本类型衍生的typedef类型也N多。熟知基本数据类型是我们正确表达实际问题中各种数据的前提,因此我分类总结了一下C/C++/Windows /C#基本数据类型,以便日后查阅。
ANSI C/C++基本数据类型:
Type
Size
数值范围
无值型void
0 byte
无值域
布尔型bool
1 byte
true false
有符号短整型short [int] /signed short [int]
2 byte
-32768~32767
无符号短整型unsigned short [int]
2 byte
0~65535
有符号整型int /signed [int]
4 byte
-2147483648~2147483647
无符号整型unsigned [int]
4 byte
0~4294967295
有符号长整型long [int]/signed long [int]
4 byte
-2147483648~2147483647
无符号长整型unsigned long [int]
4 byte
0~4294967295
long long
8 byte
0~18446744073709552000
有符号字符型char/signed char
1 byte
-128~127
无符号字符型unsigned char
1 byte
0~255
宽字符型wchar_t (unsigned short.)
2 byte
0~65535
单精度浮点型float
4 byte
-3.4E-3 ......
学了C然后C++,然后MFC/Windows,然后是C#,其中数据类型很多,由基本类型衍生的typedef类型也N多。熟知基本数据类型是我们正确表达实际问题中各种数据的前提,因此我分类总结了一下C/C++/Windows /C#基本数据类型,以便日后查阅。
ANSI C/C++基本数据类型:
Type
Size
数值范围
无值型void
0 byte
无值域
布尔型bool
1 byte
true false
有符号短整型short [int] /signed short [int]
2 byte
-32768~32767
无符号短整型unsigned short [int]
2 byte
0~65535
有符号整型int /signed [int]
4 byte
-2147483648~2147483647
无符号整型unsigned [int]
4 byte
0~4294967295
有符号长整型long [int]/signed long [int]
4 byte
-2147483648~2147483647
无符号长整型unsigned long [int]
4 byte
0~4294967295
long long
8 byte
0~18446744073709552000
有符号字符型char/signed char
1 byte
-128~127
无符号字符型unsigned char
1 byte
0~255
宽字符型wchar_t (unsigned short.)
2 byte
0~65535
单精度浮点型float
4 byte
-3.4E-3 ......
//获得汉字的区位码
byte[] array = new byte[2];
array = System.Text.Encoding.Default.GetBytes("啊");
int i1 = (short)(array[0] - ''\0'');
int i2 = (short)(array[1] - ''\0'');
//unicode解码方式下的汉字码
array = System.Text.Encoding.Unicode.GetBytes("啊");
i1 = (short)(array[0] - ''\0'');
i2 = (short)(array[1] - ''\0'');
//unicode反解码为汉字
string str = "4a55";
string s1 = str.Substring(0,2);
string s2 = str.Substring(2,2);
int t1 = Convert.ToInt32(s1,16);
int t2 = Convert.ToInt32(s2,16);
array[0] = (byte)t1;
array[1] = (byte)t2;
string s = System.Text.Encoding.Unicode.GetString(array);
//default方式反解码为汉字
array[0] = (byte)196;
array[1] = (byte)207;
s = System.Text.Encoding.Default.GetString(array);
//取字符串长度
s = "iam方枪枪";
int len = s.Length;//will output as 6
byte[] sarr = System.Text.Encoding.Default.GetBytes(s);
len = sarr.Length;//will output as 3+3*2=9
//字符串相加
......
//获得汉字的区位码
byte[] array = new byte[2];
array = System.Text.Encoding.Default.GetBytes("啊");
int i1 = (short)(array[0] - ''\0'');
int i2 = (short)(array[1] - ''\0'');
//unicode解码方式下的汉字码
array = System.Text.Encoding.Unicode.GetBytes("啊");
i1 = (short)(array[0] - ''\0'');
i2 = (short)(array[1] - ''\0'');
//unicode反解码为汉字
string str = "4a55";
string s1 = str.Substring(0,2);
string s2 = str.Substring(2,2);
int t1 = Convert.ToInt32(s1,16);
int t2 = Convert.ToInt32(s2,16);
array[0] = (byte)t1;
array[1] = (byte)t2;
string s = System.Text.Encoding.Unicode.GetString(array);
//default方式反解码为汉字
array[0] = (byte)196;
array[1] = (byte)207;
s = System.Text.Encoding.Default.GetString(array);
//取字符串长度
s = "iam方枪枪";
int len = s.Length;//will output as 6
byte[] sarr = System.Text.Encoding.Default.GetBytes(s);
len = sarr.Length;//will output as 3+3*2=9
//字符串相加
......
1.c++的到处函数只要在函数申明的时候加个导出关键字就可以了
2.参数类型问题,
一般的c++中char * 对应 c#中的string
而c++中 char **类型的参数对应c#中 ref string 这种一般都是用来返回字符串的!
3.函数入口问题,一般会出现 "找不到入口点" 这个问题不是由你引起的,而是系统自己把名字改了,改成什么样的名字建议你用eXeScope 打开dll看看里面的全称,比如我从网上下载的一个dll的导出方法列表
导出, CryptoPP32.dll
序列 地址 名字
00000001 100489D0 ?Base64DecodeFile@CryptoPP32@@YA_NPBD0@Z
00000002 1004FAC0 ?Base64DecodeString@CryptoPP32@@YA_NPBDPAPAD@Z
00000003 100488E0 ?Base64EncodeFile@CryptoPP32@@YA_NPBD0@Z
00000004 1004F960 ?Base64EncodeString@CryptoPP32@@YA_NPBDPAPAD@Z
00000005 10045EB0 ?FreeString@CryptoPP32@@YAXPAD@Z
00000006 10048800 ?GunzipFile@CryptoPP32@@YA_NPBD0@Z
00000007 10048720 ?GzipFile@CryptoPP32@@YA_NPBD0H@Z
00000008 10048E30 ?HMAC_SHA1_DecryptFile@CryptoPP32@@YA_NPBD00@Z
00000009 10048B90 ?HMAC_SHA1_DecryptString@CryptoPP32@@YA_NPBD0PAPAD@Z
0000000A 10048D40 ?HMAC_SHA1_EncryptFile@ ......
1.c++的到处函数只要在函数申明的时候加个导出关键字就可以了
2.参数类型问题,
一般的c++中char * 对应 c#中的string
而c++中 char **类型的参数对应c#中 ref string 这种一般都是用来返回字符串的!
3.函数入口问题,一般会出现 "找不到入口点" 这个问题不是由你引起的,而是系统自己把名字改了,改成什么样的名字建议你用eXeScope 打开dll看看里面的全称,比如我从网上下载的一个dll的导出方法列表
导出, CryptoPP32.dll
序列 地址 名字
00000001 100489D0 ?Base64DecodeFile@CryptoPP32@@YA_NPBD0@Z
00000002 1004FAC0 ?Base64DecodeString@CryptoPP32@@YA_NPBDPAPAD@Z
00000003 100488E0 ?Base64EncodeFile@CryptoPP32@@YA_NPBD0@Z
00000004 1004F960 ?Base64EncodeString@CryptoPP32@@YA_NPBDPAPAD@Z
00000005 10045EB0 ?FreeString@CryptoPP32@@YAXPAD@Z
00000006 10048800 ?GunzipFile@CryptoPP32@@YA_NPBD0@Z
00000007 10048720 ?GzipFile@CryptoPP32@@YA_NPBD0H@Z
00000008 10048E30 ?HMAC_SHA1_DecryptFile@CryptoPP32@@YA_NPBD00@Z
00000009 10048B90 ?HMAC_SHA1_DecryptString@CryptoPP32@@YA_NPBD0PAPAD@Z
0000000A 10048D40 ?HMAC_SHA1_EncryptFile@ ......
1.c++的到处函数只要在函数申明的时候加个导出关键字就可以了
2.参数类型问题,
一般的c++中char * 对应 c#中的string
而c++中 char **类型的参数对应c#中 ref string 这种一般都是用来返回字符串的!
3.函数入口问题,一般会出现 "找不到入口点" 这个问题不是由你引起的,而是系统自己把名字改了,改成什么样的名字建议你用eXeScope 打开dll看看里面的全称,比如我从网上下载的一个dll的导出方法列表
导出, CryptoPP32.dll
序列 地址 名字
00000001 100489D0 ?Base64DecodeFile@CryptoPP32@@YA_NPBD0@Z
00000002 1004FAC0 ?Base64DecodeString@CryptoPP32@@YA_NPBDPAPAD@Z
00000003 100488E0 ?Base64EncodeFile@CryptoPP32@@YA_NPBD0@Z
00000004 1004F960 ?Base64EncodeString@CryptoPP32@@YA_NPBDPAPAD@Z
00000005 10045EB0 ?FreeString@CryptoPP32@@YAXPAD@Z
00000006 10048800 ?GunzipFile@CryptoPP32@@YA_NPBD0@Z
00000007 10048720 ?GzipFile@CryptoPP32@@YA_NPBD0H@Z
00000008 10048E30 ?HMAC_SHA1_DecryptFile@CryptoPP32@@YA_NPBD00@Z
00000009 10048B90 ?HMAC_SHA1_DecryptString@CryptoPP32@@YA_NPBD0PAPAD@Z
0000000A 10048D40 ?HMAC_SHA1_EncryptFile@ ......
C#类:类是C# 中功能最为强大的数据类型,类也定义了数据类型的数据和行为。然后,程序员可以创建作为此类的实例的对象。
C#结构体:结构体是轻量型的类,使用开销相对于类较小。
C#类和C#结构体两者的关系:
1.数据类型:类和结构体都是数据类型,类是引用类型,结构体是值类型。
2.继承性:类可以继承和被继承,而结构体隐式继承于object,不可以继承(除接口以外)和被继承
3.构造函数:类和结构体都有默认(无参)构造函数,只不过结构体不能显示声明默认(无参)构造函数,
4.字段初始化:类可以对字段声明时赋值初始化,而结构体不可以(除const和static之外),结构体的字段必须在构造函数中进行初始化。
5.实例化:结构体实例化时可以不使用new,,如果不使用new,那么在初始化所有字段之前,字段将保持未赋值状态且对象不可用。而类必须使用new进行实例化。
如何选择C#结构体还是C#类
讨论了结构与类的相同之处和差别之后,下面讨论如何选择使用结构还是类:
1.堆栈的空间有限,对于大量的逻辑的对象,创建类要比创建结构好一些
2.结构表示如点、矩形和颜色这样的轻量对象,例如,如果声明一个含有 ......
C#类:类是C# 中功能最为强大的数据类型,类也定义了数据类型的数据和行为。然后,程序员可以创建作为此类的实例的对象。
C#结构体:结构体是轻量型的类,使用开销相对于类较小。
C#类和C#结构体两者的关系:
1.数据类型:类和结构体都是数据类型,类是引用类型,结构体是值类型。
2.继承性:类可以继承和被继承,而结构体隐式继承于object,不可以继承(除接口以外)和被继承
3.构造函数:类和结构体都有默认(无参)构造函数,只不过结构体不能显示声明默认(无参)构造函数,
4.字段初始化:类可以对字段声明时赋值初始化,而结构体不可以(除const和static之外),结构体的字段必须在构造函数中进行初始化。
5.实例化:结构体实例化时可以不使用new,,如果不使用new,那么在初始化所有字段之前,字段将保持未赋值状态且对象不可用。而类必须使用new进行实例化。
如何选择C#结构体还是C#类
讨论了结构与类的相同之处和差别之后,下面讨论如何选择使用结构还是类:
1.堆栈的空间有限,对于大量的逻辑的对象,创建类要比创建结构好一些
2.结构表示如点、矩形和颜色这样的轻量对象,例如,如果声明一个含有 ......
DllImport所在的名字空间 using System.Runtime.InteropServices;
[DllImport("User32.dll")]
public extern static System.IntPtr GetDC(System.IntPtr hWnd);
private void button19_Click(object sender, EventArgs e)
{
System.IntPtr DesktopHandle = GetDC(System.IntPtr.Zero);
Graphics g = Graphics.fromHdc(DesktopHandle);
g.DrawRectangle(new Pen(Color.Red),new Rectangle(10,10,100,100));
}
......