Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure 计算BuffereImage的rgb VAL_Clojure_Bit Manipulation_Bufferedimage - Fatal编程技术网

Clojure 计算BuffereImage的rgb VAL

Clojure 计算BuffereImage的rgb VAL,clojure,bit-manipulation,bufferedimage,Clojure,Bit Manipulation,Bufferedimage,我使用以下代码片段构建一个32位整数,用于BuffereImage的setRGB (bit-or (bit-shift-left a 24) (bit-or (bit-shift-left r 16) (bit-or (bit-shift-left g 8) b))) 在写下颜色后,读回这些颜色会显示错误的颜色我的逻辑中有错误吗?你确定有问题吗?我尝试根据您的方法和功能等效的备选方案生成一些值: (defn argbval [a r g

我使用以下代码片段构建一个32位整数,用于BuffereImage的setRGB


(bit-or (bit-shift-left a 24)
          (bit-or (bit-shift-left r 16)
              (bit-or (bit-shift-left g 8) b)))

在写下颜色后,读回这些颜色会显示错误的颜色我的逻辑中有错误吗?

你确定有问题吗?我尝试根据您的方法和功能等效的备选方案生成一些值:

 (defn argbval
  [a r g b]
  (bit-or (bit-shift-left a 24)
          (bit-or (bit-shift-left r 16)
              (bit-or (bit-shift-left g 8) b))))

(defn altargbval
  [a r g b]
  (+ (* 16777216 a) (* 65536 r) (* 256 g) b))

(defn -main
  ([& args]
    (println "(argbval 25 21 23 29): " (argbval 25 21 23 29))
    (println "(altargbval 25 21 23 29): " (altargbval 25 21 23 29))
    (println "(argbval 0 0 0 0): " (argbval 0 0 0 0))
    (println "(altargbval 0 0 0 0): " (altargbval 0 0 0 0))
    (println "(argbval 255 255 255 255): " (argbval 255 255 255 255))
    (println "(altargbval 255 255 255 255): " (altargbval 255 255 255 255))))
得到了相同的值

(argbval 25 21 23 29):  420812573
(altargbval 25 21 23 29):  420812573
(argbval 0 0 0 0):  0
(altargbval 0 0 0 0):  0
(argbval 255 255 255 255):  4294967295
(altargbval 255 255 255 255):  4294967295
我的袖珍计算器上有同样的数字

您是否看到过导致错误结果的具体论点


也许这不是该逻辑中的错误,而是在将值写入/读取到BuffereImage时的错误。

我保留了一个bytes to int函数,该函数将字节序列转换为我的:


它经常派上用场

我突然想到问题出在我这边,但实际上是图像出了问题。
(defn bytes-to-int [bytes] 
     (let [powers (iterate #(* % 256) 1)]
       (reduce + 0 (map * bytes powers))))