如何编辑Java中十六进制整数的值?
How to edit the values of hexadecimal integer in Java?
我正在尝试编辑 Java 中的十六进制值。
编辑:顺便说一句,十六进制不仅包含 RGB,还包含 alpha。
例如:
int j = 0xAARRGGBB
创建整数后如何更改 AA
或 RR
的值?
我在 Google 上找不到这个问题的答案。
非常感谢您的帮助!
这就是我想你需要做的一切
public static int toARGB(int a,int r,int g,int b){
return ((((((a << 8) | r) << 8) | g) << 8) | b);
}
public static int setB(int origin,int value){
return set(origin,0,value);
}
public static int setG(int origin,int value){
return set(origin,1,value);
}
public static int setR(int origin,int value){
return set(origin,2,value);
}
public static int setA(int origin,int value){
return set(origin,3,value);
}
public static int set(int origin,int pos,int value){
return (origin & ~(0xFF << (pos * 8)) | value << (8 * pos));
}
按位和(&
)可用于清除特定位:
int j = 0xff224488;
j = j & 0xffff00ff; // j is now 0xff220088
按位或 (|
) 可用于设置特定位:
int j = 0xff224488;
j = j & 0xffff00ff; // j is now 0xff220088
j = j | 0x00003300; // j is now 0xff223388
我正在尝试编辑 Java 中的十六进制值。
编辑:顺便说一句,十六进制不仅包含 RGB,还包含 alpha。
例如:
int j = 0xAARRGGBB
创建整数后如何更改 AA
或 RR
的值?
我在 Google 上找不到这个问题的答案。
非常感谢您的帮助!
这就是我想你需要做的一切
public static int toARGB(int a,int r,int g,int b){
return ((((((a << 8) | r) << 8) | g) << 8) | b);
}
public static int setB(int origin,int value){
return set(origin,0,value);
}
public static int setG(int origin,int value){
return set(origin,1,value);
}
public static int setR(int origin,int value){
return set(origin,2,value);
}
public static int setA(int origin,int value){
return set(origin,3,value);
}
public static int set(int origin,int pos,int value){
return (origin & ~(0xFF << (pos * 8)) | value << (8 * pos));
}
按位和(&
)可用于清除特定位:
int j = 0xff224488;
j = j & 0xffff00ff; // j is now 0xff220088
按位或 (|
) 可用于设置特定位:
int j = 0xff224488;
j = j & 0xffff00ff; // j is now 0xff220088
j = j | 0x00003300; // j is now 0xff223388