DWORD类型与16进制字符串之间的相互转换
<span style="font-family: Arial, Helvetica, sans-serif;">MFC 中输入32位地址和数据的Edit控件关联的变量为DWORD m_Addr,m_Data,</span>
在控件中输入类似“0x4F0C”的地址或数据时,直接利用UpdateData(TRUE)不能获得DWORD 类型的m_Addr,m_Data
因此只能使用GetDlgItemText(int nID,CString &cstr)来获得相关的CString类型
1、16进制的字符串转换为DWORD类型
</pre><pre name="code" class="cpp"><pre name="code" class="cpp">DWORD CConfigureDlg::HexStringToDword(TCHAR * szBuf)
{DWORD dwValue = 0;BYTE bValue;BYTE k;for(k=0;k<10;++k){if(*szBuf >= '0' && *szBuf <= '9'){bValue = *szBuf - '0';}else if(*szBuf >= 'a' && *szBuf <= 'f'){bValue = *szBuf - 'a' + 10;}else if(*szBuf >= 'A' && *szBuf <= 'F'){bValue = *szBuf - 'A' + 10;}else if(*szBuf =='x' || *szBuf == 'X'){dwValue = 0;szBuf ++;continue;}else{break;}dwValue <<= 4;dwValue |= bValue;szBuf ++;}return dwValue;
}
2、DWORD类型转换为16进制字符串
void CConfigureDlg::DwordToHexString(DWORD dwValue,TCHAR *szBuf)
{BYTE bValue;BYTE k;*szBuf = '0';*(++szBuf)='x';++szBuf;for(k=0;k<8;++k){bValue = (BYTE)((dwValue & 0xF0000000)>>28);if(bValue == 0){dwValue <<= 4;continue; }if(bValue < 10){*szBuf = bValue + '0';}else{*szBuf = (bValue-10)+'A';}dwValue <<= 4;szBuf ++;}*szBuf = '\0';
}
因为得到的为CString 类型,需要在CString 和 TCHAR *之间进行转换
1、CString转换为TCHAR *类型
TCHAR *CConfigureDlg::CString2TCHAR(CString &str)
{int iLen = str.GetLength();TCHAR *szRs = new TCHAR[iLen];lstrcpy(szRs,str.GetBuffer(iLen));str.ReleaseBuffer();return szRs;
}
2、TCHAR *类型转化为CString类型
TCHAR * szBuf = new TCHAR[10];
DwordToHexString(m_ReadData,szBuf);
CString str;
str.Format(_T("%S"),szBuf);
DWORD类型与16进制字符串之间的相互转换相关推荐
- java int 16进制字符串_关于将java int类型转换为16进制字符串的问题
package p5.com.byd.mes.dev.tool.baseToChar; /** * 任意进制转换器 * @author solar */ public class Decimal { ...
- js 16进制字符串 转 ArrayBuffer
16进制字符串 转 ArrayBuffer 的应用场景是给单片机发送指令. 16进制字符串 转 ArrayBuffer 方法一: var hexStr = 'cf 03 00 00 00 00 1e ...
- java 颜色 16进制转换_Java中Color和16进制字符串互相转换的方法
1.原理 主要是调用了toHexString(将int类型转为16进制字符串).parseInt(将字符串解析为int)这两个方法. 2.代码 public static void main(Stri ...
- 16进制转double dotnet_IEEE 16进制字符串转化为double类型
因项目需要,需要将内存中的64位16进制字符串表示成double.如下: #include #include #include #include #include using namespace st ...
- 将uint8_t类型的16进制字符转化转换为string字符串
碰到一个需求,需要把硬件读到的uint8_t类型的16进制数据转化为string类型的字符串. 例如,如果读到到的数据是一个uint8_t类型的数组uint8_t code=[5]={0XAA, 0X ...
- java 16进制字符串转base64_16进制字符串,byte[] ,base64三者之间的转换
packagecom.lgdz.qydevice.utils; importcn.hutool.core.codec.Base64; importcn.hutool.core.util.Charset ...
- 16进制字符串转成字节数组、字节数组转16进制字符串、16进制字符串转成2进制字符串、中英文 字符串转16进制、16进制转换成中英文 字符串
因为需要与硬件相互通讯 用到了这些方法 亲测可用 /*** 16进制表示的字符串 转换为字节数组** @param hexString 16进制表示的字符串* @return byte[] 字节数组* ...
- java 字节 16进制_Java字节数组和16进制字符串的互相转化
背景基础知识: 1.1. "字符"是由数字来表示的 先来重新了解一下计算机是如何处理"字符"的,这个原理是大家必须记住的,特别是在用JAVA写程序的时候,万万不 ...
- qt 中文转十六进制_QT中16进制字符串转汉字
最经在研究AT指令接受短信,短信是unicode编码,接受后需要根据系统的编码方案进行相关的转码 比如接受到了一串字符4F60597D,它是"你好"的unicode编码,一个uni ...
最新文章
- 重新解析 REST Service(REST Service 的最佳实践,第 1 部分)
- 数组精选题目三连(5)
- UVA11917 Do Your Own Homework【map】
- PHP正则表达式检查日期是YYYY-MM-DD格式
- Atitit 网络技术体系图 目录 1. 的三网融合是	1 1.1. 电话网、有线电视网	1 1.2. 计算机网	1 2. 计算机网	1 2.1. 互联网	1 2.2. 局域网	1 3. 第1章 计
- 2022跨年代码(有烟花)
- Video Copilot VCReflect for Mac/win (AE倒影插件) 支持2022多帧渲染​
- navicat12注册机生成相应注册码
- python解析can报文_解析.DBC文件, 读懂CAN通信矩阵,实现车内信号仿真
- 分享一种免费的.FLV格式视频转.MP4的方法,方便高效且不用迅捷转换器。。。
- 飞塔防火墙命令行终端修改输出长度
- macbook视频格式转换_mac视频格式转换怎么操作?如何将视频转换成mac能播放的格式?...
- ATW热泵市场现状及未来发展趋势分析
- 算法题---leetcode-1
- 梅宏:学海无涯苦作舟
- 公开披露:美国如何联合作战并入侵ISIS网络
- 证明小于60阶的无非阿贝尔单群用到的定理
- Ajax 技术汇总(转载)
- android 监听短信并获取验证码
- python满天星效果图_JavaScript实现 满天星 导航栏