字节数组到变量

Byte array to Variant

本文关键字:变量 数组 字节数 字节      更新时间:2023-10-16

我有一个字节数组,其中包含例如

CCD_ 1。

使用语句将其插入数据库时

m_pWiFiRecords->Fields->Item[varColumnIndex]->Value = _variant_t((char*)(pRecord->bss_id));

它将其保存为空数组,因为第一个元素=0x00,当将其强制转换为字节数组时,它将其另存为-1。

你能帮我解决这个问题吗?

以下是将二进制数据放入_variant_t的方法。如果数据库被设置为处理二进制数据,那么它应该对您有效。

请注意,_variant_t将负责在SAFEARRAY超出范围时对其执行深度销毁,因此您不必担心执行SafeArrayDestroy

_variant_t var;
var.vt = VT_ARRAY | VT_UI1;
SAFEARRAYBOUND rgsabound[1];
rgsabound[0].cElements = 6;
rgsabound[0].lLbound = 0;
var.parray = SafeArrayCreate(VT_UI1,1,rgsabound);
void * pArrayData = NULL;    
SafeArrayAccessData(var.parray,&pArrayData);
memcpy(pArrayData, mac, 6); 
SafeArrayUnaccessData(var.parray);
m_pWiFiRecords->Fields->Item[varColumnIndex]->Value = var;