写了个小工具,分享一下,含代码

C++语言 码拜 6年前 (2015-05-11) 345次浏览 0个评论
 

写了个小工具,分享一下,含代码

下载地址
http://download.csdn.net/detail/henry3695/6696337


void CMFCApplication2Dlg::OnBnClickedButtonDtohex()
{
	UpdateData(TRUE);
	int num = atoi(m_sInput);
	m_sInput.Format("0x%x",num);
	UpdateData(FALSE);
}


void CMFCApplication2Dlg::OnBnClickedButtonHextod()
{
	UpdateData(TRUE);
	m_sInput.MakeLower();

	char sz[50]={0};
	strcpy(sz,(LPCSTR)m_sInput);
	char* p = sz;
	int nlen = strlen(p);
	WORD dw = * (WORD*)p;

	char* p1="0x";
	WORD dw1 = *(WORD*)p1;
	if (dw==dw1)
	{
		p+=2;
		nlen-=2;
	}

	int data=0;
	int base=1;
	char *pend = p+nlen-1;
	while (pend>=p)
	{
		if (*pend>=""a"")
		{
			data+= ( (*pend-""a""+10) *base);
		}
		else
		{
			data+= ( (*pend-""0"") *base);
		}
		base*=16;
		pend--;
	}

	m_sInput.Format("%d",data);
	UpdateData(FALSE);
}


void CMFCApplication2Dlg::OnBnClickedButtonDtob()
{
	UpdateData(TRUE);
	int num = atoi(m_sInput);

	char sz[100]={0};
	char sz2[100]={0};
	int i=0;
	while (num>0)
	{
		int n = num%2;
		//TRACE("%d",n);
		if (n==1)
		{
			sz[i]=""1"";
		}
		else
		{
			sz[i]=""0"";
		}
		i++;
		num/=2;
	}
	i--;

	for (int j=0;j<=i;j++)
	{
		sz2[j]=sz[i-j];
	}

	m_sInput = sz2;
	UpdateData(FALSE);
}


void CMFCApplication2Dlg::OnBnClickedButtonBtod()
{
	UpdateData(TRUE);
	m_sInput.MakeLower();

	char sz[100]={0};
	strcpy(sz,(LPCSTR)m_sInput);
	char* p = sz;
	int nlen = strlen(p);
	WORD dw = * (WORD*)p;

	int data=0;
	int base=1;
	char *pend = p+nlen-1;
	while (pend>=p)
	{
		data+= ( (*pend-""0"") *base);
		base*=2;
		pend--;
	}

	m_sInput.Format("%d",data);
	UpdateData(FALSE);
}


void CMFCApplication2Dlg::OnBnClickedButtonRgbtoh()
{
	UpdateData(TRUE);
	m_sInput.MakeLower();
	char rgb[3]={0};
	char sz[50]={0};
	strcpy(sz,(LPCSTR)m_sInput);
	char* p = sz;
	int nlen = strlen(p);

	int i = 0;
	char *tokenPtr=strtok(sz,",");
	while(tokenPtr!=NULL)
	{
		//cout<<tokenPtr<<""\n"";
		rgb[i] = atoi(tokenPtr);
		i++;
		tokenPtr=strtok(NULL,",");
	}
	if (i!=3)
	{
		AfxMessageBox("请输入如:12,255,241");
		return;
	}

	//int aa = RGB(1,2,3);

	m_sInput.Format("0x%06x",RGB(rgb[0],rgb[1],rgb[2]));
	UpdateData(FALSE);
}


void CMFCApplication2Dlg::OnBnClickedButtonHtorgb()
{
	// TODO: 在此添加控件通知处理程序代码

	UpdateData(TRUE);
	m_sInput.MakeLower();

	char sz[50]={0};
	strcpy(sz,(LPCSTR)m_sInput);
	char* p = sz;
	int nlen = strlen(p);
	WORD dw = * (WORD*)p;

	char* p1="0x";
	WORD dw1 = *(WORD*)p1;
	if (dw==dw1)
	{
		p+=2;
		nlen-=2;
	}

	int data=0;
	int base=1;
	char *pend = p+nlen-1;
	while (pend>=p)
	{
		if (*pend>=""a"")
		{
			data+= ( (*pend-""a""+10) *base);
		}
		else
		{
			data+= ( (*pend-""0"") *base);
		}
		base*=16;
		pend--;
	}

	//m_sInput.Format("%d",data);
	byte*pRgb =(byte*)&data;

	m_sInput.Format("%d,%d,%d",pRgb[0],pRgb[1],pRgb[2]);
	UpdateData(FALSE);
}


void CMFCApplication2Dlg::OnBnClickedButtonAsciitod()
{
	UpdateData(TRUE);
	LPCSTR p=(LPCSTR)m_sInput;
	m_sInput.Format("%d",*p);
	UpdateData(FALSE);
}


void CMFCApplication2Dlg::OnBnClickedButtonDtoasciit()
{
	UpdateData(TRUE);
	int num = atoi(m_sInput);
	m_sInput.Format("%c",num);
	UpdateData(FALSE);
}


void CMFCApplication2Dlg::OnBnClickedButtonDwtoip()
{
	UpdateData(TRUE);
	DWORD dw = atol(m_sInput);
	byte ary_by[4]={0};
	memcpy(ary_by,&dw,sizeof(byte)*4);

	m_sInput.Format("%d.%d.%d.%d",ary_by[0],ary_by[1],ary_by[2],ary_by[3]);

	UpdateData(FALSE);
}


void CMFCApplication2Dlg::OnBnClickedButtonIptodw()
{
	UpdateData(TRUE);
	char sz[50]={0};
	strcpy(sz,(LPCSTR)m_sInput);
	char* p = sz;
	int i = 0;
	char *tokenPtr=strtok(p,".");
	byte ary_by[4]={0};
	while(tokenPtr!=NULL)
	{
		ary_by[i] = atoi(tokenPtr);
		i++;
		tokenPtr=strtok(NULL,".");
	}

	if (i!=4)
	{
		AfxMessageBox("请输入如:192.168.0.68");
		return;
	}

	DWORD dw;
	memcpy(&dw,ary_by,sizeof(ary_by)*4);
	m_sInput.Format("%d",dw);
	UpdateData(FALSE);

}

1分
不错,还是蛮好的~
1分
神奇的组合
1分
不错。。。支持一下
1分
推荐一个吧,看有没有可以优化的地方,或者潜在的bug!
1分
引用 2 楼 u012183952 的回复:

神奇的组合

的确

1分
好牛逼的样子
谢谢大家的支持,希望对大家有用处,花了一个早上写的,早就想写这个东东了,呵呵
1分
挺有用的挺有用的
1分
不错的工具。
1分
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
int main() {
    int i,v;
    char bs[33];
    char b[33];
    char hs[9];
    char h[9];
    char s[4];
    char *e;

// 十进制整数转二进制串;
    i=1024;
    ltoa(i,b,2);
    sprintf(bs,"%032s",b);
    printf("i=%d,bs=%s\n",i,bs);
// 十进制整数转十六进制串;
    i=1024;
    ltoa(i,h,16);
    sprintf(hs,"%08s",h);
    printf("i=%d,hs=%s\n",i,hs);
// 十六进制字符串转成十进制数
    strcpy(hs,"00000400");
    sscanf(hs,"%x",&i);
    printf("hs=%s,i=%d\n",hs,i);
// 二进制字符串转化为十六进制字符串;
    strcpy(bs,"00000000000000000000010000000000");
    i=strtol(bs,&e,2);
    ltoa(i,h,16);
    sprintf(hs,"%08s",h);
    printf("bs=%s,hs=%s\n",bs,hs);
// 二进制字符串转化为十进制数;
    strcpy(bs,"00000000000000000000010000000000");
    i=strtol(bs,&e,2);
    printf("bs=%s,i=%d\n",bs,i);
// 十六进制字符串转成二进制串
    strcpy(hs,"00000400");
    sscanf(hs,"%x",&i);
    ltoa(i,b,2);
    sprintf(bs,"%032s",b);
    printf("hs=%s,bs=%s\n",hs,bs);
// ASC\GBK字符串转十六进制串
    strcpy(s,"a汉");
    i=0;
    while (1) {
        if (0==s[i]) break;
        sprintf(hs+i*2,"%02X",(unsigned char)s[i]);
        i++;
    }
    setlocale(LC_ALL,"chs");
    printf("s=%s,hs=%s\n",s,hs);
// 十六进制字符串转成汉字(GBK)及字符(ASC)
    strcpy(hs,"61BABA");
    i=0;
    while (1) {
        if (1!=sscanf(hs+i*2,"%2x",&v)) break;
        s[i]=(char)v;
        i++;
    }
    s[i]=0;
    printf("hs=%s,s=%s\n",hs,s);

    return 0;

}
//i=1024,bs=00000000000000000000010000000000
//i=1024,hs=00000400
//hs=00000400,i=1024
//bs=00000000000000000000010000000000,hs=00000400
//bs=00000000000000000000010000000000,i=1024
//hs=00000400,bs=00000000000000000000010000000000
//s=a汉,hs=61BABA
//hs=61BABA,s=a汉
1分
实用,赞一个
1分
C++版块是没有什么可以推荐了么?
1分
实在没亮点~
1分
挺好,不错,赞一个。
1分
   楼主强!赵老师强!
1分
赵老师
1分
来试一下~~
1分
 分享总是值得赞扬的。。。虽然没去看。。嘎嘎
1分
还没学C语言,看不懂
1分
– – .  
1分
bucuo ////////
1分
都是高手a!
1分
不错,界面有点丑
1分
支持 支持 支持
1分
分享总是值得鼓励的。
楼主是应该是个新人,
支持ing。
1分
www.qg10086.net
1分
赞一个
1分
实用,赞一个
1分
亲亲,支持下~~~~~~~~~~~~~~~~
1分
挺好,不错,赞一个!
1分
不错哦哦o 哦
1分
支持分享好软件。
1分
很不错的样子
1分
界面不错,似乎标题可以改个程序名。
1分

 应该不是新人了;支持;
 学习了~!

1分
支持,学习了!
1分
支持支持。。。。。。。。。。。。。。。
1分
上首页了。。。
1分
支持,学习了!
1分
赵老师太强大了。。。
学习了。。!
1分
学习了
1分
进制转换啊。可以。
1分
很是需要呢,很是需要呢
1分
没早看见啊,以前用到
1分
比较实用,收藏先。
1分
支持!应该有用。
1分
很强大,学习了
1分
收藏!
很强大,学习了
呵呵。
高级计算器。。。。。
厉害啊啊啊啊啊啊啊
支持原创,感谢了!
明显建议在stdafx.h中加:

#if defined _M_IX86  
#pragma comment(linker,"/manifestdependency:"type=""win32"" name=""Microsoft.Windows.Common-Controls"" version=""6.0.0.0"" processorArchitecture=""x86"" publicKeyToken=""6595b64144ccf1df"" language=""*"""")  
#elif defined _M_X64  
#pragma comment(linker,"/manifestdependency:"type=""win32"" name=""Microsoft.Windows.Common-Controls"" version=""6.0.0.0"" processorArchitecture=""amd64"" publicKeyToken=""6595b64144ccf1df"" language=""*"""")  
#else  
#pragma comment(linker,"/manifestdependency:"type=""win32"" name=""Microsoft.Windows.Common-Controls"" version=""6.0.0.0"" processorArchitecture=""*"" publicKeyToken=""6595b64144ccf1df"" language=""*"""")
#endif   
感谢分享
不错。。。支持一下
这个早就有,只不过没你这个功能全,是给做web前端和做xss的人用的,这是我写的
写了个小工具,分享一下,含代码
哇。。。。支持一个
虽然看不懂但还是要赞一下
不错,真的好
不明觉厉
谢谢谢谢谢谢谢谢
目测是c
外观好看点就更好了
怎么感觉好多评论都是小号啊 你看那昵称 难道CSDN也有人来刷分??
支持楼主的作品!
小工具挺实用的 自己做过,类似老赵的写法。 
 若果在加上unicode 的就更好
引用 83 楼 wan212000 的回复:

怎么感觉好多评论都是小号啊 你看那昵称 难道CSDN也有人来刷分??

其实就是倒分党

看你写得如此麻烦
16进制字符串转数值只要调用 unsigned long value = strtol(szstr, 0, 16);
10进制字符串转数值同样函数 unsigned long value strtol(szstr, 0, 10);
至于ip什么的转换字节塞入ws2_32里面的函数即可,另外的RGB宏什么的,这代码量也就白来行
看着这么多代码,有种回到大学的感觉
不错,值得学习。
非常感谢,这样做对数据类型有个比较清晰的认识。如果能有注释就更好了。。

引用 16 楼 u013114835 的回复:

挺好,不错,赞一个。

   

非常强大哦,不错
我只想说一句话,程序员的最终目标是学好编程,造福人类,结贴,散分
下载下来看看。
学习一下…..
赵老师赞一个~
下来玩玩儿sswc
没有积分啊df
好牛的样子 不过dword是啥?
C++么?
谢谢楼主分享
支持原创,感谢了!
很实用啊。。。。。。。。。
虽然没亮点,但分享就是一种勇气
不错  试试 
顶起!!分享
好东西,下载来看看
谢谢楼主啦~~~拿走研究了~~~
学教您如何更快获得可用分 你还可以输入9999个字符  (Ctrl+Enter) 
支持
好厉害!mark
赞  正需要  自己又懒得写
不错,谢谢分享
细心的人,成长真快啊
进制转换,像楼主学习了
不错,赞一个。
0.0,没积分,下载不了
有用啊   非常好
lz 刚入门c++ 一般用vc6.0编程  你这个工具是用什么编译器做的? 另外头文件是神马  现在完全是小白 望指教
这个东西还是挺有用的,碰上问题了是真心烦
灰常给力,好强大
引用 2 楼 u012183952 的回复:

神奇的组合

+1

不错哟,学习之

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明写了个小工具,分享一下,含代码
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!