字节数组转变量

3
我有一个字节数组,例如

byte mac[6] = {0x00, 0x8a, 0x0C, 0x98, 0x11, 0x15}.

当使用以下语句将其插入到数据库中

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

在保存时它变成了空数组,因为第一个元素是0x00,将其作为字节数组转换时保存为-1。

您能帮我找出问题吗?

1个回答

8

以下是将二进制数据放入_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;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接