3 回答

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超6個(gè)贊
Java 使用有符號的 32 位整數(shù)。擴(kuò)展他們發(fā)布的代碼塊,我們可以創(chuàng)建一個(gè)完整的示例,它可以滿足我們的需要:
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 代碼的原始風(fēng)格,并將返回正確的值。

TA貢獻(xiàn)2041條經(jīng)驗(yàn) 獲得超4個(gè)贊
Java 使用有符號 32 位 int,因此值介于 -2^31 和 2^31 之間。一旦達(dá)到 2^31,它們就會(huì)從 -1 繼續(xù)到 -2^31。
嘗試將此應(yīng)用于您在 Flutter 中獲得的結(jié)果:
if (result > pow(2, 31)) { result = result - pow(2, 32); }

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超13個(gè)贊
也許用 1 填充高位數(shù)字?
int rgb = -6619245;
final c = Color(rgb);
print('${c.red} ${c.green} ${c.blue}');
int fromColorRgb = c.value | 0xFFFFFFFF00000000;
print('$rgb : $fromColorRgb');
結(jié)果:
I/flutter (10689): 154 255 147
I/flutter (10689): -6619245 : -6619245
假設(shè)您的 Alpha 通道始終為 255
添加回答
舉報(bào)