フラッター色とバックにJavaの整数の色

ロビンDijkhof:

私は、javaからフラッタに私のアプリを再構築しています。私は整数値として色を格納するfirebaseを使用しています。Javaでは、私は整数値にRGB値を変換するには、次を使用することができます。

colorInt = (255 << 24) | (color.red << 16) | (color.green << 8) | color.blue;

そして、私はRGBに整数値から変換するために、以下のように使用することができます。

int r = (colorInt >> 16) & 0xFF;
int g = (colorInt >> 8) & 0xFF;
int b = colorInt & 0xFF;

どのように私はフラッタ色とバックへのJava integercolorを変換することができますか?

例では、RGB 154、255、147を取ることができます

フラッターでは、これは結果は4288348051であるだろう

(255 << 24) | (154 << 16) | (255 << 8) | 147;
(4278190080) | (10092544) | (65280) | 147;

(4278190080) | (10092544) = 4288282624;
(4278190080) | (10092544) | (65280) = 4288347904;
(4278190080) | (10092544) | (65280) | 147 = 4288348051

Javaでは、このようになり-6619245

(255 << 24) | (154 << 16) | (255 << 8) | 147;
(-16777216) | (10092544) | (65280) | 147;

(-16777216) | (10092544) = -6684672;
(-16777216) | (10092544) | (65280) = -6619392;
(-16777216) | (10092544) | (65280) | 147 = -6619245;
AKushWarrior:

@Ovidiuが述べたように、Javaの用途は、32ビット整数を署名しました。彼らは投稿のコードブロックを拡張し、我々は必要なものを私たちに与え、完全な例を作成することができます。

import 'dart:math';

int chopToJavaInt (int result) {
  while (result > pow(2, 31)) {
    result = result - pow(2, 32);
  }
  return result;
}

int javaIntColor(int r, int g, int b) {
  var x = (g << 24) | (r << 16) | (g << 8) | b;
  return chopToJavaInt(x);
}

void main () {
  print(javaIntColor(154, 255, 147)); //-6619245
}

このソリューションは、モジュール化されてJavaコードから、あなたのオリジナルのスタイルを維持し、正しい値を返します。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=325888&siteId=1