获取c++ byte数组长度出现很奇怪的问题

获取c++ byte数组长度出现很奇怪的问题,第1张

没有什么奇怪的,C++并不在语言级别上支持“获得数组长度”的能力。之所以main里行,是因为此时data是数组,而数组是有长度的,而chksCheck内它已经退化成指针,不具有数组的任何信息

如果你需要对象尺寸,用C++类,而不要用原生态数组

代码如下:

var msg = EncodingDefaultGetString(thisbufToArray());

2完整性判断while (msgLength > BeginOfLineLength + EndOfLineLength)//至少要包含头(2字节)+长度(1字节)+校验(1字节)。

{

if (msgIndexOf(BeginOfLine) == 0)

{

if (msgIndexOf(EndOfLine) > 0)

{

thisRaw = new byte[msgIndexOf(EndOfLine) - BeginOfLineLength + 1];

thisbufCopyTo(BeginOfLineLength, thisRaw, 0, msgIndexOf(EndOfLine) - BeginOfLineLength);

thisbufRemoveRange(0, msgIndexOf(EndOfLine) + EndOfLineLength);                         if (thisbufCount > 0)

{

msg = EncodingDefaultGetString(thisbufToArray());

}

else msg = "";

thisOnGetNew(thisRaw);

}

else

{

break;

}

}

else

{

//这里是很重要的,如果数据开始不是头,则删除数据。

int index = msgIndexOf(BeginOfLine);

if (index > 0)

{

thisbufRemoveRange(0, index);

msg = msgSubstring(index,msgLength- index);

}

else

{

if(thisbufCount>0)thisbufRemoveAt(0);

msg = "";

}

}

BYTE Hex1 = (Bin1<<7)+(Bin2<<6)+(Bin3<<5)+(Bin4<<4)+(Bin5<<3)+(Bin6<<2)+(Bin7<<1)+Bin8;

用calloc函数来给数组动态分配内存:

char a=(char)calloc(fileGetLength(),sizeof(char));

使用完毕之后记得释放分配的内存:free(a); 否则会造成内存泄露

UpdateData(TRUE);

另外,我给你一个获取数据更好理解的,工作量更少的办法:

COleSafeArray dataGet;

CByteArray dat;

dataGet = m_comCtrlDlgGetCommCtrl()GetInput(); //读缓冲区

// DWORD len = dataGetGetOneDimSize(); // 这里获取长度

dataGetGetByteArray(dat);

// datGetSize()也可以获取长度

你 *** 作dat就像 *** 作unsigned char 数组一样就是了

串口收数据,有时候一次本来就收不完整,你需要有个接受缓存,收到的数据全部放到缓存中,当收集完整了,才开始干你的事情,收不完整,我经常遇到到,都是这样解决的

for(k=0;k<29;k++)

safearray_inpGetElement(&k,rxdata+k);//转换为BYTE型数组

你这句有问题,如果你没有收到29个,就要出问题

for(k=0;k<29;k++) //将数组转换为Cstring型变量

{

BYTE bt=(char)(rxdata+k); //字符型

strtempFormat("%X",bt); //将字符送入临时变量strtemp存放

m_EditRxData+=strtemp; //加入接收编辑框对应字符串

}

这个FOR也是同样的问题

以上就是关于获取c++ byte数组长度出现很奇怪的问题全部的内容,包括:获取c++ byte数组长度出现很奇怪的问题、MFC串口接收数据,如何接受正确的一串数据、MFC 如何将 BYTE类型的二进制数据转换成BYTE型的十六进制数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9500726.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存