【问题标题】:Java concatenating integer values as a byteJava将整数值连接为一个字节
【发布时间】:2013-02-12 11:04:04
【问题描述】:

我有以下 4 个代表 ARGB 的整数值:

int value1 = 0xFF;
int value2 = 68;
int value3 = 68;
int value4 = 68;

我想连接这些值,以便它们表示以下内容:

int test = 0xFF686868;

我目前的做法是使用:

int test2 = 0xFF | value1 | value2 | value3;

但是使用这种方法,test1 和 test2 的整数值不匹配,我做错了什么?我仅限于 J2ME。

【问题讨论】:

    标签: java java-me argb


    【解决方案1】:

    您就快到了:您需要做的就是在OR-ing 将它们放在一起之前将各个字节移动到位。

    int test2 = (value1 << 24) | (value2 << 16) | (value3 << 8) | value4;
    

    不要忘记将 68s 设置为十六进制,以获得所需的 0xFF686868 输出

    int value2 = 0x68; // Add 0x to all three of the 68s
    

    【讨论】:

    • 你能解释一下为什么我必须移动字节吗?另外,如何将 68 转换为 0x68?谢谢
    • @S-K' 将左移视为向右添加零。在十六进制表示法中,移位 4 与在末尾添加一个零相同。移位 24 增加 6 个零,增加 16 - 4 个零,增加 8 - 2 个零。由于ORing 为零会产生原始数字,因此移位和ORing 字节可让您构造一个四字节数字。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-14
    • 1970-01-01
    • 2010-12-28
    • 2023-04-01
    • 2013-08-17
    相关资源
    最近更新 更多