将从iPos位置开始的2个字节合并成1个,在CString中显示
来源:互联网 发布:薪酬数据 编辑:程序博客网 时间:2024/06/05 23:45
方法1:
void MergeTwoCharToShow(char* pData, int& iPos, CString& csCur){int iCur;int iCurH;int iCurL;char szCur[8];iCurH = (unsigned char)pData[iPos];iCurL = (unsigned char)pData[iPos + 1];iCur = (iCurH << 8) + iCurL;iPos +=2;itoa(iCur, szCur, 10); //按10进制转换csCur = szCur;}
方法2:
void MergeTwoCharToShow(char* pData, int& iPos, CString& csCur){int iCur;int iCurH;int iCurL;char szCur[8];iCurH = (unsigned char)pData[iPos];iCurL = (unsigned char)pData[iPos + 1];iCur = (iCurH << 8) + iCurL;iPos +=2;_itoa_s(iCur, szCur, 10, 10); //按10进制转换csCur = szCur;}
方法3:
void MergeTwoCharToShow(char* pData, int& iPos, CString& csCur){int iCur;int iCurH;int iCurL;char szCur[8];iCurH = (unsigned char)pData[iPos];iCurL = (unsigned char)pData[iPos + 1];iCur = (iCurH << 8) + iCurL;iPos +=2;sprintf_s(szCur, sizeof(szCur), "%d", iCur); //按10进制转换csCur = szCur;}
方法4:
void MergeTwoCharToShow(char* pData, int& iPos, CString& csCur){int iCur;int iCurH;int iCurL;iCurH = (unsigned char)pData[iPos];iCurL = (unsigned char)pData[iPos + 1];iCur = (iCurH << 8) + iCurL;iPos +=2;csCur.Format("%d", iCur); //按10进制转换}
在VS2008中的VC项目中,如果直接用itoa这个函数,在编译的时候会有警告说让你用_itoa,然后你用_itoa的时候呢,它又有警告说要用_itoa_s这个函数才行。
_itoa_s和itoa是有区别的,_itoa_s(int ,char *,int ,int )有四个参数,比itoa的参数个数要多一些,_itoa_s函数的四个参数的意思分别是:
参数1: 要转换的整形变量
参数2: 转换后的字符串
参数3: 第一个参数的进制表示,如十进制,16进制这样的值,
参数4: 转换后的字符串结果数的进制表示,如十进制,16进制这样的值
这是在VS中的方法,不过还是建议多用标准C++中的函数,这样如果存在代码移植的情况时,需要改动的就小很多了。 然而在实际的应用当中,还是建议大家用sprintf这个函数,在VS中用这个函数会有警告,可以使用sprintf_s函数。用它的好处时,将数字类型的值转为相用的字符串时,可以格式化,即不足位可以自动补0进行占位,而_itoa_s则不会自动进行补位,很多时侯我们是需要固定长度的字符串的,这种情况下_itoa_s就麻烦一些,需要自己另外去补齐,而sprintf这个函数恰恰能自动完成这个过程。
使用CString来处理字符串是一个很不错的选择。CString既可以处理Unicode标准的字符串,也可以处理ANSI标准的字符串。CString的Format方法给我们进行字符串的转换带来了很大的方便,比如常见的int、float和double这些数字类型转换为CString字符串只需一行代码就可以实现。
先看看Format用于转换的格式字符:
%c 单个字符
%d 十进制整数(int)
%ld 十进制整数(long)
%f 十进制浮点数(float)
%lf 十进制浮点数(double)
%o 八进制数
%s 字符串
%u 无符号十进制数
%x 十六进制数
1、int转换为CString:
CString str;
int number=15;
//str="15"
str.Format(_T("%d"),number);
//str=" 15"(前面有两个空格;4表示将占用4位,如果数字超过4位将输出所有数字,不会截断)
str.Format(_T("%4d"),number);
//str="0015"(.4表示将占用4位,如果数字超过4位将输出所有数字,不会截断)
str.Format(_T("%.4d"),number);
long转换为CString的方法与上面相似,只需要把%d改为%ld就可以了。
2、double转换为CString:
CString str;
double num=1.46;
//str="1.46"
str.Format(_T("%lf"),num);
//str="1.5"(.1表示小数点后留1位,小数点后超过1位则四舍五入)
str.Format(_T("%.1lf"),num);
//str="1.4600"
str.Format(_T("%.4f"),num);
//str=" 1.4600"(前面有1个空格)
str.Format(_T("%7.4f"),num);
float转换为CString的方法也同上面相似,将lf%改为f%就可以了。
3、将十进制数转换为八进制:
CString str;
int num=255;
//str="377"
str.Format(_T("%o"),num);
//str="00000377"
str.Format(_T("%.8o"),num);
- 将从iPos位置开始的2个字节合并成1个,在CString中显示
- 9号中断:按下f3键,将从b8000h处开始的4000个字节复制到20000h处,按下f8键,将从20000h处开始的4000个字节复制到b8000h处。
- 将一个字符串从第40个字节开始替换为@"..."
- [小技巧]如何让你的app在Android launcher中显示在第一个位置
- 删除字符串中多余的空格]给定字符串,删除开始和结尾处的空格,并将中间的多个连续的空格合并成一个
- 对于一个给定的 source 字符串和一个 target 字符串,你应该在 source 字符串中找出 target 字符串出现的第一个位置(从0开始)。如果不存在,则返回 -1。
- 从2开始的256个素数
- JQuery确定第一个参数在数组中的位置,从0开始计数(如果没有找到则返回 -1 )。
- js从字符串中截取10个字节的长度
- 实现一个Memcpy函数:将源指针所指的区域从起始地址开始的n个字节复制到目的指针所指区域
- 如何将4个字节的int转为1个字节的BYTE?
- 如何将4个字节的int转为1个字节的BYTE?
- 将2个list合并为一个list,一个是从数据库中查询出的,一个是自己new的
- SQLServer中如何将一个字段的多个记录值合在一行显示
- “如何将16进制码流在html中显示为图片”兼容多个浏览器的方案。
- “如何将16进制码流在html中显示为图片”兼容多个浏览器的方案
- 从相应位置开始删除指定字符串的相应个字符
- 验证java中1个char是2个字节
- jquery.teml()小例子
- C++大数乘法
- Eclipse 安装最新SVN插件
- DICOM的几个PDU包
- 关于switch和if else的效率问题
- 将从iPos位置开始的2个字节合并成1个,在CString中显示
- 人民银行项目总结
- MySQL 教程
- 清除缓存
- jni遇到的问题总结
- Axure函数大全
- AAA Spring集成Quartz定时任务框架介绍和Cron表达式详解
- for jdevelope for ebs 12
- JSON数据格式