今天写代码的时候碰到一个问题,需要我从数据库取一个寄存器地址的数据,并将数据存入到一个char类型的数组当中。
我的解决思路是这样的,既然我要拿到这个数据,那就先把数据从寄存器中取出来,寄存器的配置大小为八个字节,所有我设置一个 unsigend long long类型,大小为8个字节。
unsigend long long status = 0;
在 C++中,可以使用 bitset 类来存储二进制数据。首先,使用 ReadItem 函数读取寄存器地址的数据,并将其存储在一个字节数组中。
ReadItem(bPn, 0x0040, (BYTE *)&ddStatus1);
然后,将该字节数组转换为 bitset 对象。
std::bitset<64> sbArrStatus1(ddStatus1);
并使用 to_string 函数将其转换为字符串。
string str1 = sbArrStatus1.to_string();
最后,将该字符串存储在一个 char 数组中。
char cArrStatu1[64] = { 0 };
strcpy(cArrStatu1,str1.c_str());
具体过程就是先将寄存器地址中的数据取出来,寄存器数据大小为8个字节,那就使用8个字节类型的对象来取数据,再将取数据的对象转换成对应大小的字节数组,再将数组通过to_string转换成string类型,再建立对应大小的数组,通过拷贝将字符串拷贝到数组中去。