[英]Split a 32 bit Integer into 4 8 bit Integers
我正在使用 Java 處理視頻數據,並希望在 32 位整數中存儲四個 8 位整數。 換句話說,我想將 R、G、B 和 A 值從 0 到 255 打包成一個 32 位整數。
我該怎么辦:
創建從 0 到 255 的 4 個整數值並將它們存儲在 32 位整數中?
從 32 位整數解包 4 個 8 位整數值?
謝謝!
包裝:
int rgba = (a << 24) | (b << 16) | (g << 8) | r;
<<
是左移運算符; |
是按位或運算符。
開箱:
int r = rgba & 0xff;
int g = (rgba >> 8) & 0xff;
int b = (rgba >> 16) & 0xff;
int a = (rgba >> 24) & 0xff;
>>
是(帶符號的 *)右移運算符; &
是按位和運算符。
顯然,您可以按照您想要的任何順序打包/打開它們。
(*) 您可以在此處使用有符號或無符號 ( >>>
) 右移。 在這種情況下,它對結果沒有影響。
這很簡單。 使用Color
類。
- 創建從 0 到 255 的 4 個整數值並將它們存儲在 32 位整數中?
使用Color(int, int, int, int)
構造函數和getRGB
方法。
- 從 32 位整數解包 4 個 8 位整數值?
使用Color(int)
構造函數和方法getRed
、 getGreen
、 getBlue
和getAlpha
。
您可以使用以下基於ByteBuffer
實用程序:
int transformToInt(byte[] array) {
return ByteBuffer.wrap(array).order(ByteOrder.BIG_ENDIAN).getInt();
}
byte[] transformToBytes(int value) {
return ByteBuffer.allocate(4).putInt(value).array();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.