まず第一に、私は非常に新しく、ビット単位の操作スタッフの知識が乏しいため、私の質問がばかげているように思われる場合は申し訳ありません..
したがって、Android アプリには 5 つのチェックボックスがあり、これらのチェックボックスの状態をバックエンドと同期する必要があります。しかし、真/偽の値を持つ 5 つの要素を持つ単純な JSON オブジェクトの代わりに、整数 (13 など) を取得し、すべてのチェックボックスの状態を表す整数を送信する必要があります。API ドキュメントには、次のように記載されています。
FromUri Int32 可視性 : 可視性 = 次の値のビットの "OR" 演算 None = 0、NameVisibile = 1 | Web 可視 = 2 | MobileVisible = 4 | DOBVisible = 8 | AddressVisible = 16
WebVisible
したがって、これは、たとえばチェックボックスMobileVisible
とDOBVisible
チェックボックスがある場合2 + 4 + 8 = 14
、チェックボックスの状態を表すために番号14を送信して送信する必要があることを意味すると思いますか?
同じロジックで、BE から整数を取得した場合、このように解釈する必要がありますか?
public void test(int value){
if (value >= 16){
addressVisible = true;
value -= 16;
} else {
addressVisible = false;
}
if(value >= 8){
dobVisible = true;
value -= 8;
} else {
dobVisible = false;
}
if(value >= 4){
mobileVisible = true;
value -= 4;
} else {
mobileVisible = false;
}
if(value >= 2){
webVisible = true;
value -= 2;
} else {
webVisible = false;
}
if(value >= 1){
nameVisibile = true;
} else {
nameVisibile = false;
}
}
これは、この問題を解決する正しい方法ですか? ビット単位の演算子を使用して同じことを行う「スマートな」方法がもっとあるのではないでしょうか?