最近 写的小小程序 写上来作为生活的记录
//这个小程序实现了把下面类型的数组 转换为字符串 (其实就是通信协议中imsi在协议中的格式)
#include <stdio.h>
#include <iostream>
void main()
{
unsigned char a[5]={0x21,0x43,0x65,0x87,0xF9};
char b[100];
char c[100];
int i=0,j;
for(j=0;i<5;i++,j++)
{
*(b+j++)=(*(a+i))&0x0F;
*(b+j)=(*(a+i)>>4)&0x0F;
}
if (*(b+(j-1))==0x0F)
{
j--;
}
int offset=0;
for(int it=0;it<j;it++)
{
offset += sprintf_s(c+ offset,8,"%d",*(b+it));
}
std::cout<<c<<std::endl;
system("pause");
}
//这个小程序是 一个txt文件 里面存了用逗号隔开的两列 也就是相当于做了个字符串分割
#include <stdio.h>
#include <iostream>
#include <fstream>
using namespace std;
char* pField[2];
void main()
{
string path = "imsi_tmsi.txt";
fstream file;
file.open(path.c_str(),ios::binary|ios::in);
char Buffer[128];
memset(Buffer, 0, 128);
if (!file.good()) {
cout << "to open file error" << endl;
}
while (!file.eof()) {
file.getline(Buffer,128);
char* p = Buffer;
if (strlen(p) == 0) {
break;
}
char* pTemp = strchr(p,',');
if (pTemp != NULL) {
*pTemp = '\0';
pField[0] = p;
cout << pField[0] <<',';
p = ++pTemp;
}
pField[1] = p;
cout << pField[1] << endl;
}
file.close();
system("pause");
}
//这是 用上面的分割出来个两个字符串,以imsi做key实现了一个超级菜鸟的哈希表然后查找 并测试了下查找到所用的时间
#include <boost/cstdint.hpp>
#include <iostream>
#include <fstream>
#include <assert.h>
#include <stdlib.h>
#include <time.h>
using namespace std;
using namespace boost;
typedef struct hashnode
{
uint64_t imsi;
uint64_t tmsi;
struct hashnode *next;
}hashNode,*hashNodePtr;
hashNodePtr hash_table[100001] ={NULL};
void main()
{
ifstream fin;
char st[30],imsi[16],tmsi[16];
int i=0;
clock_t start,finish;
double duration;
uint64_t haha = 460006079065945;
fin.open("imsi_tmsi.txt", ios::in);
while(fin.getline(st,30,'\n'))
{
hashNode * creat_node;
creat_node=(hashNode *)malloc(sizeof(hashNode));
for (i=0;i<15;i++)
{
imsi[i]=st[i];
tmsi[i]=st[i+16];
}
creat_node->imsi=0;
creat_node->tmsi=0;
creat_node->next=NULL;
imsi[15]='\0';
char * ptmsi=tmsi;
for(int i=0;i<15;i++)
{
creat_node->imsi = creat_node->imsi * 10 + (*(imsi+i) - '0');
}
cout<<"imsi"<<creat_node->imsi<<endl;
while(* ptmsi!='\0')
{
creat_node->tmsi=creat_node->tmsi*10 +(*ptmsi-'0');
ptmsi++;
}
cout<<creat_node->imsi<<"imsi"<<endl;
assert (creat_node != NULL );
unsigned int index = creat_node->imsi % 100001;
cout<<index<<" in"<<endl;
creat_node->next=hash_table[index];
hash_table[index]=creat_node;
}
unsigned int chazhao=haha%100001;
hashNodePtr p;
start=clock();
for (p=hash_table[chazhao];p!=NULL;p=p->next)
{
cout<<p->imsi<<"imsi"<<endl;
if (p->imsi==haha)
{
cout<<"i find it"<<endl;
finish=clock();
break;
}
}
duration=(double)(finish-start)/CLOCKS_PER_SEC;
cout<<duration<<"seconds"<<endl;
fin.close();
system("pause");
}
//这是当时刚学stl里多映射时写的最简单的菜鸟程序 丢人了额
#include <iostream>
#include<map>
#include <string>
using namespace std;
int main(void)
{
multimap<string,string> multimap_;
multimap<string,string>::iterator p;
typedef multimap<string,string>::value_type vt;
typedef string s;
multimap_.insert(pair<s,s>("Tom ","is a student"));
//multimap_.insert(vt(s("Tom "),s("is a student")));
multimap_.insert(vt(s("Tom "),s("is a boy")));
multimap_.insert(vt(s("Tom "),s("is a bad boy of blue!")));
//multimap_.insert(vt(s("Jerry "),s("is a student")));
//multimap_.insert(vt(s("Jerry "),s("is a beatutiful girl")));
//multimap_.insert(vt(s("DJ "),s("is a student")));
multimap_.insert(pair<s,s>("Jerry ","is a student"));
multimap_.insert(pair<s,s>("DhJh ","is a student"));
multimap_.insert(pair<s,s>("DhJh ","is hk"));
multimap_.insert(pair<s,s>("DhJh ","is jimmy lin"));
multimap_.insert(pair<s,s>("Jerry ","is a student"));
// for(p=multimap_.begin();p!=multimap_.end();++p)
// {
// cout<<(*p).first<<(*p).second<<endl;
// }
// cout<<"find Jerry :"<<endl;
p=multimap_.find(s("Jerry "));
while((*p).first=="Jerry ")
{
cout<<(*p).first<<(*p).second<<endl;
++p;
}
cin.get();
return 0;
}
//这是当时的一个socket通信的一个简单的服务器端程序
/*#include "stdafx.h"*/
#include <iostream>
#include <winsock2.h>
#pragma comment(lib,"ws2_32.lib")
#include <Windows.h>
using namespace std;
#define PORT 8000
#define IP_ADDRESS "192.168.0.92"
DWORD WINAPI ClientThread(LPVOID lpParameter)
{
SOCKET ClientSocket = (SOCKET)lpParameter;
int Ret = 0;
char RecvBuffer[MAX_PATH];
while ( true )
{
memset(RecvBuffer, 0x00, sizeof(RecvBuffer));
Ret = recv(ClientSocket, RecvBuffer, MAX_PATH, 0);
if ( Ret == 0 || Ret == SOCKET_ERROR )
{
cout<<"客户端退出!"<<endl;
break;
}
// for (int i=0;i<MAX_PATH;i++)
// {
// printf("%x",RecvBuffer[i]);
// }
cout<<"接收到客户信息为:"<<RecvBuffer<<endl;
}
return 0;
}
int main(int argc, char* argv[])
{
WSADATA Ws;
SOCKET ServerSocket, ClientSocket;
struct sockaddr_in LocalAddr, ClientAddr;
int Ret = 0;
int AddrLen = 0;
HANDLE hThread = NULL;
//Init Windows Socket
if ( WSAStartup(MAKEWORD(2,2), &Ws) != 0 )
{
cout<<"Init Windows Socket Failed::"<<GetLastError()<<endl;
return -1;
}
//Create Socket
ServerSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if ( ServerSocket == INVALID_SOCKET )
{
cout<<"Create Socket Failed::"<<GetLastError()<<endl;
return -1;
}
LocalAddr.sin_family = AF_INET;
LocalAddr.sin_addr.s_addr = inet_addr(IP_ADDRESS);
LocalAddr.sin_port = htons(PORT);
memset(LocalAddr.sin_zero, 0x00, 8);
//Bind Socket
Ret = bind(ServerSocket, (struct sockaddr*)&LocalAddr, sizeof(LocalAddr));
if ( Ret != 0 )
{
cout<<"Bind Socket Failed::"<<GetLastError()<<endl;
return -1;
}
Ret = listen(ServerSocket, 100);
if ( Ret != 0 )
{
cout<<"listen Socket Failed::"<<GetLastError()<<endl;
return -1;
}
cout<<"服务端已经启动"<<endl;
while ( true )
{
AddrLen = sizeof(ClientAddr);
ClientSocket = accept(ServerSocket, (struct sockaddr*)&ClientAddr, &AddrLen);
if ( ClientSocket == INVALID_SOCKET )
{
cout<<"Accept Failed::"<<GetLastError()<<endl;
break;
}
cout<<"客户端连接::"<<inet_ntoa(ClientAddr.sin_addr)
<<":"<<ClientAddr.sin_port<<endl;
hThread = CreateThread(NULL, 0, ClientThread, (LPVOID)ClientSocket, 0, NULL);
if ( hThread == NULL )
{
cout<<"Create Thread Failed!"<<endl;
break;
}
CloseHandle(hThread);
}
closesocket(ServerSocket);
closesocket(ClientSocket);
WSACleanup();
return 0;
}
//这个小函数让我明白了临时变量的的不好惹 也让我明白了vs和gcc的差距呀
#include <iostream>
#include <stdlib.h>
using namespace std;
class A
{
public:
A(int)
{
cout<<"构造\n";
}
A(const A &)
{
cout<<"拷贝\n";
}
};
int main()
{
A(0);
cout<<"------------------------\n";
A(A(0));
cout<<&(A(A(0)))<<"------------------------\n";
A(A(A(0)));
cout<<"------------------------\n";
A(A(A(A(0))));
cout<<"------------------------\n";
system("pause");
return 0;
}
我去! 本想多记录些 发现前几个月写的几个程序特别特别长 粘上来太二了 算了。。还有工作的代码不敢贴上来啊,,工作机密 这有着平时写写玩的才敢贴 没办法 签保密协议的
总结一句 我是一只大大的小菜鸟 继续酱油 继续前进。。

浙公网安备 33010602011771号