gpt4 book ai didi

java - 十六进制操作问题。达不到预期值

转载 作者:行者123 更新时间:2023-12-02 08:09:16 34 4
gpt4 key购买 nike

我应该合并源数组和背景数组的值以获得预期的值(答案数组)。

    int[][] source =     { { 0, 0x44, 0x300, 0x660000 } };
int[][] background = { { 2, 4, 0x600, 2 } };
int[][] expected = { { 1, 0x24, 0x400 , 0x330001 } };

我注意到问题只是询问除第三种情况之外的所有情况的两组数字的平均值(这意味着我已经通过了除 0x300/0x600 之外的所有测试)。我认为第三种情况很奇怪。我将这两个十六进制表示为二进制:

    0011 0000 0000 (+)
0110 0000 0000 I get:
1001 0000 0000.

预期是 0x400, 10 基数为 1024,基数 2 为 100 0000 0000。我不知道如何获得该解决方案。

最佳答案

术语“背景”让我想到,它与图像/像素操作有关。在这种情况下,每个像素包含红色、绿色和蓝色的三个分量。如果每个组件都是一字节宽(值从 0 到 255),则 32 位整数可以容纳所有三个组件。并且“取平均值”必须分别在每个组件上完成,因为您不希望“绿色” channel 影响“蓝色” channel 。

我们假设表示形式为 0x00rrggbb。

src: 0x00660000 -> 0x00, 0x66, 0x00, 0x00
bac: 0x00000002 -> 0x00, 0x00, 0x00, 0x02
adding components: 0x00, 0x66, 0x00, 0x0x
dividing comp : 0x00, 0x33, 0x00, 0x01
exp: OK OK OK OK

对 0x0300、0x0600 进行同样的操作,您会发现,如果舍入不正确,“绿色”的除法会影响“蓝色”。通过组件进行数学计算解决了这个问题。

关于java - 十六进制操作问题。达不到预期值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7695188/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com