CString存到unsigned char数组中出错了

南空 2011-04-11 09:25:34
unsigned char CString2Hex(CString var)
{
unsigned char len = var.GetLength();
unsigned char res=0;
unsigned char tmp=0;
char f[2];
for(int i = len;i>0;i--)
{

memset(f,0,2);
sprintf(f,"%c",var.GetAt(len-i));
tmp = atoi(f)<<(4*(i-1));
res+=tmp;
}
return res;
}
这是VC中的一个全局函数,当调用它时
unsigned char Data[16]="0";
CString filestr;
for(int i=0;i<15;i++)
{
Data[i]=CString2Hex(filestr.Mid(i*2,2));
}
问题:
当filestr为498496584244854854564185493854时,正确得到Data[0]=49,Data[1]=84......
但是当filestr为CDABDCABDCEBDCEDABDCEABCEDABED时,得不到正确数据????
请高手指教,谢谢了。
...全文
136 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
luciferisnotsatan 2011-04-11
  • 打赏
  • 举报
回复
和你要做的不太一样。和你的是相反的操作。

[Quote=引用 3 楼 luciferisnotsatan 的回复:]

C/C++ code
void cnvt(CString in, wchar_t *out)
{
size_t len = in.GetLength();
TCHAR tmp[5] = {0};
TCHAR *endPtr;
TCHAR *p = in.GetBuffer();
int i,j;

for(i = 0,j=0; i < len; ……
[/Quote]
luciferisnotsatan 2011-04-11
  • 打赏
  • 举报
回复
void cnvt(CString in, wchar_t *out)
{
size_t len = in.GetLength();
TCHAR tmp[5] = {0};
TCHAR *endPtr;
TCHAR *p = in.GetBuffer();
int i,j;

for(i = 0,j=0; i < len; i+=4,j++)
{

wcsncpy(tmp,p+i,4);
out[j] = wcstol(tmp,&endPtr,16);
}
in.ReleaseBuffer();
out[j] = '\0';
}


过去写的一个宽字节版本,lz自己改下
delphiwcdj 2011-04-11
  • 打赏
  • 举报
回复
试试
int nLen=filestr.GetLength();
unsigned char *szBuffer = new unsigned char[nLen+1];
strcpy(szBuffer, (unsigned char*)filestr.GetBuffer(0));
luciferisnotsatan 2011-04-11
  • 打赏
  • 举报
回复
用var.GetBuffer得到c风格的字符串,用完后记得ReleaseBuffer
内容概要:LAN8720A是一款符合IEEE 802.3/802.3u标准的低功耗、高集成度以太网物理层收发器,支持10/100Mbps数据传输速率,采用精简媒体独立接口(RMII),具备HP自动MDIX功能,能够在直连或交叉网线环境下自动识别并适配连接方式。该芯片采用24引脚QFN/SQFN小型封装(4×4mm),支持灵活的电源架构(LVCMOS可变I/O电压1.6V至3.6V),内置1.2V稳压器,并可通过外部25MHz晶体降低BOM成本。其主要功能包括自动协商、回环测试、节能模式(如能量检测断电)、中断管理、LED状态指示以及强大的信号完整性处理能力,适用于多种嵌入式网络设备。; 适合人群:从事嵌入式系统设计、网络硬件开发及相关电子工程领域的技术人员,特别是需要在空间受限、低功耗要求高的产品中集成以太网功能的研发工程师。; 使用场景及目标:①在机顶盒、网络打印机、数字电视、IP电话、无线接入点等消费类或工业类嵌入式设备中实现稳定可靠的以太网连接;②通过RMII接口与MAC控制器对接,减少引脚数量和系统复杂度,降低整体设计成本;③利用自动MDIX和自动协商功能提升网络连接的兼容性与即插即用体验;④借助多种低功耗模式(如能量检测断电)优化电池供电设备的能耗表现,延长续航时间。; 阅读建议:在实际应用中应重点关注电源时序、复位配置、时钟电路设计及PCB布局,尤其应注意XTAL1/CLKIN与XTAL2的匹配电容设置、RBIAS偏置电阻精度以及暴露焊盘的接地处理。建议结合文档中的典型应用图和电气特性参数进行硬件设计与调试,确保信号完整性与系统稳定性。同时,务必查阅最新版数据手册与勘误表以获取更新的技术信息和支持。

33,318

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧