怎样把const char *cMyData 类型转换为unsigned char *cData ?
解决方案 »
- 函数内(new)开辟内存空间报错!
- vc添加按钮,终止while()循环
- 关于MFC添加热键问题
- ~~~~~~~~~~~~~~~~~哪里有PDF Library SDK下载,用过的帮下忙~~~~~~~~~~~~~~~~~~~~~~````
- Please give me some good ideas!Thanks!!
- ClassWizard里可以将某种控件映射为一个变量究竟是如何实现的?
- 如何使编辑框自动滚屏
- 关于函数重载
- 能不能暂停Windows中所有用户应用程序的执行?
- windows下怎样获取磁盘的名称
- 在richedit控件不断有输入并向下滚动时,如何使其停止滚动?
- 不用UpdateData()如何实现'控件"与"对应变量"的数据交换
主要是const的问题,C++要求不能修改const属性。
要强行转换的话,试试static_cast。
CString b="我們";
const char* ccVar;
ccVar=(char*)(LPCTSTR)b;
unsigned char* ucVar;
ucVar=(unsigned char*)ccVar;
unsigned char *pData = (unsigned char*)(const_cast<char*>(pSrc));
char是有符号的,而unsigned char无符号,
如果字符值超过128, 转换过来就不对了,
怎样转换使不出错?
如果是String="F6F4",怎样转换成unsigned char a=0xF6,
unsigned char b=0xF4 ?
请看一下下面的例子,注意其中的strtoul函数。
-------------------------------
#include <stdlib.h>
#include <stdio.h>void main( void )
{
char *string, *stopstring;
double x;
long l;
int base;
unsigned long ul;
string = "3.1415926FThis stopped it";
x = strtod( string, &stopstring );
printf( "string = %s\n", string );
printf(" strtod = %f\n", x );
printf(" Stopped scan at: %s\n\n", stopstring );
string = "-34932FThis stopped it";
l = strtol( string, &stopstring, 10 );
printf( "string = %s\n", string );
printf(" strtol = %ld\n", l );
printf(" Stopped scan at: %s\n\n", stopstring ); string = "3492F";
printf( "string = %s\n", string );
/* Convert string using base 2, 4, and 8: */
for( base = 2; base <= 16; base *= 2 )
{
/* Convert the string: */
ul = strtoul( string, &stopstring, base );
printf( " strtol = %ld(%lX) (base %d)\n", ul, ul, base );
printf( " Stopped scan at: %s\n", stopstring );
}
}
----------
对于你上面的问题,得到了c=0xF6F4,如何得到0xF6和0xF4就很简单了。循环除256并求余就可以了。