Java中的byte
很郁闷 一段很简单的代码 把ARGB转为RGBA,结果图像颜色偏红。
搞了很久,才知道问题出在了byte身上。
一个颜色分量8位,想当然的用了byte,组合成一个像素32位,就是
(r<<24)|(g<<16)|(b<<8)|(a)
问题就出在了byte到int的转换上
byte在Java中是有符号的 (win32中是unsigned char)
这样0xFF转成int就变成0xFFFFFFFF (-1)
也就是说如果蓝色 b=0xFF的话, 这样转化过后颜色就变为白色了
如果是绿色的话 就变黄色了
不知道Java在设计时怎么想的,byte为无符号才更加贴合我们的需要
相关文档:
Java IO学习笔记:字节流
字节流是最基本的流,文件的操作、网络数据的传输等等都依赖于字节流。而字符流常常用于读取文本类型的数据或字符串流的操作等等。
关于字节流的API,没什么好说的,看看就知道了。这里挑几个关键点:
一、InputStream的API
1、public int read()
从输入流读取下一个 ......
package Utils.Sort;
/**
*希尔排序,要求待排序的数组必须实现Comparable接口
*/
public class ShellSort implements SortStrategy
{
private int[] increment;
/**
*利用希尔排序算法对数组ob ......
package Utils.Sort;
/**
*快速排序,要求待排序的数组必须实现Comparable接口
*/
public class QuickSort implements SortStrategy
{
private static final int CUTOFF = 3; //当元素数大于此 ......