我必须做以下事情
在包含4个字节的char数组的末尾以十六进制追加2个字节,因此结果为6个字节.
将上面的6字节字节数组转换为char数组,将其传递给函数crcresult.(该函数只接受char数组).
最后在6字节的末尾合并crc 2字节.
我已在单独的java类中测试了以下程序,并且它有效.
public class CharBytetest
{
public static void main(String[] args)
{
char charbuffer1[] = {0x01,0x05,0x00,0x03};
byte[] bufferbyte1 = new String(charbuffer1).getBytes();// converts chararray to byte array
byte byte4 = (byte)0xFF;
byte byte5 = (byte)0x00;
byte[] bufferbytemerge1 = new byte[bufferbyte1.length+2];
System.arraycopy(bufferbyte1, 0, bufferbytemerge1, 0, bufferbyte1.length);
bufferbytemerge1[bufferbyte1.length]= byte4;
bufferbytemerge1[bufferbyte1.length +1 ]= byte5;
//bufferbytemerge1 contains 6 byte (charbuffer1 + byte4 + byte5 )
String str = new String(bufferbytemerge1);
//bufferbytemerge1 converted to char array
char[] charbuffer2 = str.toCharArray();
byte[] bufferbyte2 …Run Code Online (Sandbox Code Playgroud) 我需要将类中定义的数组的大小作为依赖于情境的值.为了澄清这一点,以下具有固定数组大小的代码显示没有错误
class CMinimalServer : public GBDataAccess
{
public:
DWORD IdG[30];
VARIANT Value[30];
WORD Quality[30];
FILETIME Timestamp[30], ft;
HRESULT Error[30];
Run Code Online (Sandbox Code Playgroud)
但是我需要在上面的例子中将数组的大小设置为'30'作为可靠值.我的意思是说,假设代码的其他部分,我有
if (a==b)
Number = 10;
else
Number = 30;
Run Code Online (Sandbox Code Playgroud)
因此,阵列的大小应为10和30.
但是以下代码显示错误
class CMinimalServer : public GBDataAccess
{
public:
DWORD IdG[Number ];
VARIANT Value[Number ];
WORD Quality[Number ];
FILETIME Timestamp[Number ], ft;
HRESULT Error[Number ];
Run Code Online (Sandbox Code Playgroud)
我试过了
#define Number 16
Run Code Online (Sandbox Code Playgroud)
在顶部和上面的代码显示没有错误,但问题是我不能修改代码的其他部分中的变量
////解决方案中的一些问题
我根据建议修改了代码:我必须在类中创建函数(createTag).
// Class definition
class CMinimalServer : public GBDataAccess
{
public:
struct Entry
{
DWORD IdG;
VARIANT Value;
WORD Quality; …Run Code Online (Sandbox Code Playgroud)