将二进制分配给向量C ++

时间:2011-03-17 19:48:47

标签: c++ vector binary

我正在尝试将数字转换为网络,然后将结果放入

中的向量中
std::vector<char> vctData;  
u_long lnum = 145;  
lnum = htonl(lnum);  
//This line should put lnum at the beginning of vector in the first 4 bytes  
vctData.insert(vctData.begin(), ???, ???); 

怎么做???

谢谢

2 个答案:

答案 0 :(得分:4)

std::vector<unsigned char> vctData;
u_long lnum = 145;
lnum = htonl(lnum);
vctData.insert(vctData.begin(), (unsigned char *) &lnum, (unsigned char *) (&lnum + 1));

这将获取lnum的各个字节并将它们逐个放入vctData。

答案 1 :(得分:1)

编辑:知道之后,你需要将lnum添加到char矢量中,然后执行以下操作:

std::vector<char> vctData; //note: mention the type argument!
u_long lnum = 145;  
lnum = htonl(lnum);  

//inserts in the beginning!
vctData.insert(vctData.begin(),(char*)&lnum, (char*)&lum + sizeof(u_long)); 

试试这个。让我知道它是否适合你。