package com.aliyun.odps.data;
import java.util.Arrays;
import com.aliyun.odps.utils.StringUtils;
/**
* Binary 类型对应的数据类
*
* Created by zhenhong.gzh on 16/12/12.
*/
public class Binary implements Comparable<Binary> {
protected byte[] data;
public Binary(byte[] data) {
this.data = data;
}
public byte[] data() {
return data;
}
public int length() {
return data.length;
}
@Override
public int compareTo(Binary rhs) {
int len1 = data.length;
int len2 = rhs.data.length;
int lim = Math.min(len1, len2);
byte[] v1 = data;
byte[] v2 = rhs.data;
for (int i = 0; i<lim; ++i) {
byte b1 = v1[i];
byte b2 = v2[i];
if (b1 != b2) {
return b1 - b2;
}
}
return len1 - len2;
}
@Override
public String toString() {
return new String(StringUtils.encodeQuotedPrintable(data));
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Binary binary = (Binary) o;
return Arrays.equals(data, binary.data);
}
@Override
public int hashCode() {
return Arrays.hashCode(data);
}
}