如何从java或c中的8位样本中生成1个字节?

时间:2011-08-19 09:54:09

标签: java c protocols

我有8位带有随机值的样本(称为标题),我有十六进制值的命令,请参阅下面的内容:

[8 bit][command]
 \      |
  \     \------------------ [01 30 00 00 = hex start the machine]
   \
   +-------------------+
   | 00001111 = hi     |
   | 00000000 = hello  |
   | 00000101 = wassup |
   +-------------------+

如何将8位样本转换为1个字节并将其与上面的十六进制值连接?

1 个答案:

答案 0 :(得分:2)

在这两种语言中,您都可以使用bitwise operations

所以在C中,如果你有:

uint32_t command;
uint8_t  sample;

您可以将这些连接到例如64位数据类型如下:

uint64_t output = (uint64_t)command << 32
                | (uint64_t)sample;

如果您想要一个输出字节数组(用于通过RS-232或其他方式进行序列化),那么您可以执行以下操作:

uint8_t output[5];
output[0] = sample;
output[1] = (uint8_t)(command >>  0);
output[2] = (uint8_t)(command >>  8);
output[3] = (uint8_t)(command >> 16);
output[4] = (uint8_t)(command >> 32);