将布尔序列化为c++;并在java中反序列化为布尔值 我有两个单独的应用程序,一个用java编写,另一个用C++编写,通过Socket互相通信。我试图通过减少数据结构中的字节数来满足带宽要求。我的解决方案的一部分是将存储在C++应用程序中的变量作为Boobe作为单个位,但我不确定如何将单个1或0放入我的char *缓冲区。我意识到一个字符必须是一个完整的字节,但我有许多布尔值可以作为1和0在相同的字节中通过套接字传递。如何在C++中实现这一点?

将布尔序列化为c++;并在java中反序列化为布尔值 我有两个单独的应用程序,一个用java编写,另一个用C++编写,通过Socket互相通信。我试图通过减少数据结构中的字节数来满足带宽要求。我的解决方案的一部分是将存储在C++应用程序中的变量作为Boobe作为单个位,但我不确定如何将单个1或0放入我的char *缓冲区。我意识到一个字符必须是一个完整的字节,但我有许多布尔值可以作为1和0在相同的字节中通过套接字传递。如何在C++中实现这一点?,java,c++,serialization,deserialization,Java,C++,Serialization,Deserialization,另一方面,我如何在java应用程序中将表示布尔值的1和0的字节解析为布尔值?我目前正在java应用程序中使用ByteBuffer。这和我想做的相符吗?如果是这样,我如何才能做到这一点,如果不是,还有什么替代解决方案?如果使用字符表示8个布尔值,则可以对角色和控制掩码执行逐位and(&),以确定哪些位被翻转 例如:我有一个字符eightBools='a'//A是ascii 65=01000001b 如果我想检查最低有效列,我可以使用00000001按位和八位组合 结果 010000001

另一方面,我如何在java应用程序中将表示布尔值的1和0的字节解析为布尔值?我目前正在java应用程序中使用ByteBuffer。这和我想做的相符吗?如果是这样,我如何才能做到这一点,如果不是,还有什么替代解决方案?

如果使用字符表示8个布尔值,则可以对角色和控制掩码执行逐位and(&),以确定哪些位被翻转

例如:我有一个字符eightBools='a'//A是ascii 65=01000001b 如果我想检查最低有效列,我可以使用00000001按位和八位组合

结果

    010000001 //char 'a'
  & 000000001 //ascii [start-of-heading], or integer 1
 is 000000001. //equals 1.  You know this bit is flipped.
现在您知道最低阶位已翻转。相反,如果您想查看第二个最重要的位是否被翻转,您可以使用该特定位对其进行调整

   010000001 //char 'a' or int 65
 & 010000000 //char '@' or int 64
is 010000000 // equals 64.  Now you know this bit is flipped.

使用此方法,您可以将一个字符用作8个布尔的数组。

如何有效地确定哪个字符代表我的8个布尔?@ping您不必这样做。您可以使用位移位操作来打包字符!只要每次都按相同的顺序将位移到char中,就可以按相反的顺序将它们移回。