VC 错误ASSERT(nFirst+nCount<=GetData()->nDataLength);
时间:2011-11-18
来源:互联网
CString str = "01 02 03 04 0A 0B 0C 0D";
BYTE bTemp[8]={0};
for(int i=0;i<8;i++){
ssacanf(str.Mid(i*3),"%x",&bTemp[i]);
}
我要将文本框中的字符串数据01 02 03 04 0A 0B 0C 0D 转化为BYTE 数组,如上。
运行出现错误,调试到bTemp[6]时跳到CString类的ASSERT(nFirst+nCount<=GetData()->nDataLength);下。
请问怎么回事?明显没有越界。这个GetData()->nDataLength是字符串的长度么?
BYTE bTemp[8]={0};
for(int i=0;i<8;i++){
ssacanf(str.Mid(i*3),"%x",&bTemp[i]);
}
我要将文本框中的字符串数据01 02 03 04 0A 0B 0C 0D 转化为BYTE 数组,如上。
运行出现错误,调试到bTemp[6]时跳到CString类的ASSERT(nFirst+nCount<=GetData()->nDataLength);下。
请问怎么回事?明显没有越界。这个GetData()->nDataLength是字符串的长度么?
作者: a379039233 发布时间: 2011-11-18
高人呢? 哎
作者: a379039233 发布时间: 2011-11-22
C/C++ code
sscanf输入的是一个16进制数,%x就是表示输入一个16进制形式的整数,占用4个字节,所以当输入到0a的时候就占满了,输入0b的时候自然会出错,把bTemp加大就正确了。
CString str = "01 02 03 04 0A 0B 0C 0D"; BYTE bTemp[18]={0}; int i; for(i=0;i<8;i++) { sscanf( str.Mid( i * 3 ),"%x",&bTemp[i]); }
sscanf输入的是一个16进制数,%x就是表示输入一个16进制形式的整数,占用4个字节,所以当输入到0a的时候就占满了,输入0b的时候自然会出错,把bTemp加大就正确了。
作者: jennyvenus 发布时间: 2011-11-24
CString str = "01 02 03 04 0A 0B 0C 0D";
BYTE bTemp[8]={0};
sscanf(str,"%x%x%x%x%x%x%x%x",&bTemp[0],&bTemp[1],&bTemp[2],&bTemp[3],&bTemp[4],&bTemp[5],&bTemp[6],&bTemp[7]);
BYTE bTemp[8]={0};
sscanf(str,"%x%x%x%x%x%x%x%x",&bTemp[0],&bTemp[1],&bTemp[2],&bTemp[3],&bTemp[4],&bTemp[5],&bTemp[6],&bTemp[7]);
作者: gameslq 发布时间: 2011-11-27
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28