如何将接收到的单字节数据转换为双字节数据

时间:2023-01-12 08:06:57
客户端发送数据0x01,0x03,0x38,0x0B,0xD7,0x0B,0x42,0x00,0x00,0xF0,0x41,0xD7,0x12
我想将其转换为双字节:
0x00,0x01 
0x00,0x03 
0x00,0x38 
0x00,0x0B 
0x00,0xD7 
0x00,0x0B 
0x00,0x42 
0x00,0x00 
0x00,0x00 
0x00,0x70
0x00,0x41 
0x00,0xD7 
0x00,0x12并存储起来,请问如何转换?也就是给每个字节添加一个高字节0x00

7 个解决方案

#1


WORD直接强转DWORD就是在低位

如果要去高位<<8 就可以了

#2


用一个 for 循环,里面:
doub_wd[i] = sing_by[i];

#3


引用 1 楼  的回复:
WORD直接强转DWORD就是在低位

如果要去高位<<8 就可以了

传递过来的是字节字符

#4


字节字符是char ?
是char就能直接转

你难道传过来是字符串?
4个字节0x01 还是 2个字节 01?
太不划算了。

#5


DWORD dwLen;                       // 接收的数据字节数,需要知道大小
BYTE *pArrayByte = dataRecved;      // 接收的数据地址
WORD *pArrayWord = new WORD[dwLen]; // 转换后的数据
for (i = 0; i < dwLen; i++) {
    pArrayWord[i] = (WORD)(BYTE)pArrayByte[i];
}
// 保存转换后的数据 pArrayWord
delete[] pArrayWord;

#6


存储的时候再处理:一次数据扫描,插入0x00字节

#7


引用 6 楼  的回复:
存储的时候再处理:一次数据扫描,插入0x00字节

也就是开两倍的缓存区,初始化为0x00,然后跳插值...
也可以在从客户端接收的时候,就一个一个字节接收,隔位写...

#1


WORD直接强转DWORD就是在低位

如果要去高位<<8 就可以了

#2


用一个 for 循环,里面:
doub_wd[i] = sing_by[i];

#3


引用 1 楼  的回复:
WORD直接强转DWORD就是在低位

如果要去高位<<8 就可以了

传递过来的是字节字符

#4


字节字符是char ?
是char就能直接转

你难道传过来是字符串?
4个字节0x01 还是 2个字节 01?
太不划算了。

#5


DWORD dwLen;                       // 接收的数据字节数,需要知道大小
BYTE *pArrayByte = dataRecved;      // 接收的数据地址
WORD *pArrayWord = new WORD[dwLen]; // 转换后的数据
for (i = 0; i < dwLen; i++) {
    pArrayWord[i] = (WORD)(BYTE)pArrayByte[i];
}
// 保存转换后的数据 pArrayWord
delete[] pArrayWord;

#6


存储的时候再处理:一次数据扫描,插入0x00字节

#7


引用 6 楼  的回复:
存储的时候再处理:一次数据扫描,插入0x00字节

也就是开两倍的缓存区,初始化为0x00,然后跳插值...
也可以在从客户端接收的时候,就一个一个字节接收,隔位写...