`
AAries
  • 浏览: 39742 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

byte[]数组的转换

 
阅读更多
引用

public class DataFormatConvertUtil {
/**
* Static method, a long type data into a byte array of specified length
*
* @return byte[]
*/
public static byte[] intToByteArray(long res, int length) {

byte[] byteArray = new byte[length];
for (int i = 0; i < byteArray.length; i++) {
byteArray[i] = (byte) ((res >> ((byteArray.length - i - 1) *) & 0xff);
}
return byteArray;
}

/**
* Static method, a byte array into a signed int type data
*
* @return int
*/
public static int byteArrayToSignedInt(byte[] res) {
byte[] bytes = new byte[4];
if ((res[0] & 0x80) == 0x80) {

for (int i = 0; i < bytes.length - res.length; i++) {
bytes[i] = -1;
}
for (int i = bytes.length - res.length; i < bytes.length; i++) {
bytes[i] = res[i - (bytes.length - res.length)];
}
} else {
for (int i = bytes.length - res.length; i < bytes.length; i++) {
bytes[i] = res[i - (bytes.length - res.length)];
}
}
int nResult = DataFormatConvertUtil.getResult(bytes);
return nResult;
}

/**
* private method,a byte array shift operations
*
* @return int
*/
private static int getResult(byte[] res) {
int nTemp, nResult;
nResult = 0;
for (int i = 0; i < res.length; i++) {
nTemp = res[i] & 0xFF;
nTemp = nTemp << ((res.length - i - 1) *;
nResult = nResult | nTemp;
}
return nResult;
}

/**
* Static method, a byte array into a Unsigned int type data
*
* @return int
*/
public static int byteArrayToUnsignedInt(byte[] res) {
byte[] bytes = new byte[4];
for (int i = bytes.length - res.length; i < bytes.length; i++) {
bytes[i] = res[i - (bytes.length - res.length)];
}
int nResult = DataFormatConvertUtil.getResult(bytes);
return nResult;
}

/**
* Static method, a byte array into a signed long type data
*
* @return long
*/
public static long byteArrayToSignedlong(byte[] res) {

byte[] bytes = new byte[8];
if ((res[0] & 0x80) == 0x80) {

for (int i = 0; i < bytes.length - res.length; i++) {
bytes[i] = -1;
}
for (int i = bytes.length - res.length; i < bytes.length; i++) {
bytes[i] = res[i - (bytes.length - res.length)];
}
} else {
for (int i = bytes.length - res.length; i < bytes.length; i++) {
bytes[i] = res[i - (bytes.length - res.length)];
}
}
long nResult = DataFormatConvertUtil.getResult(bytes);
return nResult;

}

/**
* Static method, a byte array into a Unsigned long type data
*
* @return long
*/
public static long byteArrayToUnsignedlong(byte[] res) {
byte[] bytes = new byte[8];
if (res.length < {
for (int i = bytes.length - res.length; i < bytes.length; i++) {
bytes[i] = res[i - (bytes.length - res.length)];
}
}
long nResult = DataFormatConvertUtil.getResult(bytes);
return nResult;
}

/**
* Static method, a hexString data into a bytes
*
* @return byte[]
*/
public static byte[] hexStringToBytes(String hexString) {
if (hexString == null || hexString.equals("")) {
return null;
}
hexString = hexString.toUpperCase();
int length = hexString.length() / 2;
char[] hexChars = hexString.toCharArray();
byte[] d = new byte[length];
for (int i = 0; i < length; i++) {
int pos = i * 2;
d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));
}
return d;
}

private static byte charToByte(char c) {
return (byte) "0123456789ABCDEF".indexOf(c);
}


/**
* Static method, a hexString data into a int type data
*
* @return int
*/
public static int hexToInt(String str) {
return Integer.parseInt(str, 16);
}

/**
* Static method, a int type data into a hexString data
*
* @return String
*/
public static String intToHexString(int value) {
StringBuilder str = new StringBuilder("");
String hv = Integer.toHexString(value);
if (hv.length() < 2) {
str.append(0);
}
str.append(hv);
return str.toString();
}

/**
* Static method, a int type data into a hexString data by length
*
* @return String
*/
public static String intToHexString(int value, int length) {
String v = "";
StringBuilder str = new StringBuilder("");
int maxInt = getMaxIntByByteSigned(length);
int mi = maxInt/2;
if(value < 0){
if(value < -mi){
value = -mi;
}
}if(value > 0){
if(value > mi){
value = mi;
}
}
String hv = Integer.toHexString(value);
int i = length * 2 - hv.length();// two hex is a byte
for (int j = 0; j < i; j++) {
str.append(0);
}
str.append(hv);
if (value < 0) {
v = str.substring((str.length() - length * 2), str.length());
return v;
} else {
return str.toString();
}
}

private static int getMaxIntByByteSigned(int length){
StringBuffer maxHex = new StringBuffer();
for (int i = 0; i < length; i++) {
maxHex.append("FF");
}
return hexToInt(maxHex.toString());
}

public static void main(String[] args) {
// System.out.println(a.byteArrayToSignedInt(new byte[]{7,-48}));
System.out.println(intToHexString(-34000, 2));
}

/**
* Static method, a byte array data into hexString
*
* @return String
*/
public static String byteArrayToHexString(byte[] byteArray) {
StringBuilder str = new StringBuilder("");
for (int i = 0; i < byteArray.length; i++) {
int v = byteArray[i] & 0xFF;
String hv = Integer.toHexString(v);
if (hv.length() < 2) {
str.append(0);
}
str.append(hv);
}
return str.toString();
}

/**
* Static method, a short type data into a hexString data
*
* @return String
*/
public static String shortToHex(short in) {
byte[] b = new byte[2];
for (int i = 0; i < 2; i++) {
b[i] = (byte) ((in >> (1 - i) * & 0xFF);
}
String bstr = byteArrayToHexString(b);
return bstr;
}

/**
* Static method, a float type data into a hexString data
*
* @return String
*/
public static String floatToHexString(float f) {
return Float.toHexString(f);
}

/**
* Static method, a byte type data into a float data
*
* @return float
*/
public static float byteToFloat(byte[] by) {
ByteBuffer buffer = ByteBuffer.wrap(by);
FloatBuffer fb = buffer.asFloatBuffer();
return fb.get();
}

/**
* Static method, a byte type data into a double data
*
* @return String
*/
public static double byteToDouble(byte[] by) {
ByteBuffer buffer = ByteBuffer.wrap(by);
DoubleBuffer fb = buffer.asDoubleBuffer();
return fb.get();
}
}

分享到:
评论

相关推荐

    byte数组转换工具类 byte数组转int,byte数组转short,short转byte数组

    byte数组操作的工具类,支持byte数组转int,int转byte数组,byte数组转short,short转byte数组。。。 下载的人多了,csdn会自动涨分,现在可以手动调了,我给降到最低了

    C#中将byte数组转换为8bit灰度图像

    在C#编程语言中,将byte数组转换为8bit灰度图像是一项常见且重要的技能,尤其是在处理图像数据或开发图像处理应用时。本文将详细解析这一过程,包括关键概念、技术细节以及具体实现步骤。 ### 关键概念 1. **8bit...

    CString与char数组和BYTE数组转换

    实现CString和char数组的相互转换,实现CString和BYTE数组(16进制)的相互转换

    C#byte数组结构体互相转换示例.zip

    总结起来,这个"C#byte数组结构体互相转换示例"提供了C#中结构体与字节数组之间转换的实用方法,解决了开发过程中常见的序列化和反序列化需求,提高了代码效率。开发者可以根据自己的项目需求,直接引用或借鉴这些...

    C#中byte数组和c++结构体的转换

    发送数据时,只能发送byte数组,处理起来比较麻烦不说,如果是和c++等写的程序通信的话,很多的都是传送结构体,在VC6.0中可以很方便的把一个char[]数组转换为一个结构体,而在C#却不能直接把byte数组转换为结构体,...

    C#_string_byte数组转换解析

    这里提供了一个将字节数组转换为16进制字符串的辅助函数: ```csharp public static string ToHexString(byte[] bytes) { string hexString = string.Empty; if (bytes != null) { StringBuilder strB = new ...

    C# byte数组与Image相互转换的方法

    2、把从数据库读取的byte数组转换为Image对象,赋值给相应的控件显示。 3、从图片byte数组得到对应图片的格式,生成一张图片保存到磁盘上。 这里的Image是System.Drawing.Image。 以下三个函数分别实现了上述三个...

    PHP CRC8算法-集成十六进制转byte数组与byte数组转十六进制

    由C代码翻译过来的PHP CRC8算法,内有十六进制转字节数组与字节数组转十六进制,内有十六进制转byte数组与byte数组转十六进制

    java中两个byte数组实现合并的示例

    在Java编程语言中,有时我们需要将两个或多个字节数组(`byte`数组)合并成一个新的单一数组。这种情况在处理二进制数据、文件读写或者与硬件交互时尤其常见。本文将深入探讨如何在Java中实现两个`byte`数组的合并,...

    java基本类型与byte数组互相转换.doc

    由于Java基本类型和byte数组都是基本的数据结构,因此在Java编程中经常需要将基本类型转换为byte数组,或者将byte数组转换为基本类型。 在上面的代码中,我们可以看到将Java基本类型转换为byte数组的多个方法,每个...

    std::string、char*、const char*转托管byte数组或托管字符串String

    char*是C语言风格的字符串,它可以使用strlen函数获取其长度,然后使用Marshal::Copy函数将其拷贝到托管的byte数组中,最后使用System::Text::Encoding::UTF8-&gt;GetString函数将byte数组转换为托管的UTF8编码字符串。...

    java基本类型与byte数组互相转换.pdf

    Java 基本类型与 byte 数组互相转换 Java 中的基本类型与 byte 数组之间的转换是非常重要的,以下是关于 Java 基本类型与 byte 数组互相转换的相关知识点: 1. short 类型转换成 byte 数组 在 Java 中,short ...

    Java将图片转换为byte数组例子总结

    #### 三、将byte数组转换回图片的方法 **方法名称**:`bytesToImage` **参数**: - `byte[] bytes`:表示包含图像数据的字节数组。 **返回值**:`Image` 表示转换后的图像对象。 **实现逻辑**: 1. **创建图像**...

    Java-byte数组转换成16进制字符串

    Java-byte数组转换成16进制字符串

    android byte字节数组转换十六进制字符串

    在Android中,通常不需要担心这个问题,因为byte数组通常不涉及字节序。 总结,Android中将字节数组转换为十六进制字符串的方法多种多样,可以根据项目需求和性能要求选择合适的方式。在开发过程中,了解并熟练掌握...

    byte数组转uint

    public static uint ByteToInt(byte[] b) { uint u = 0; int startIndex = 0; if (b.Length == 8) u = (uint)(b[startIndex + 0] | b[startIndex + 1] | b[startIndex + 2] | b[startIndex + 3] | b[startIndex...

    Image 和Byte数组之间转换

    ### Image与Byte数组之间的转换知识点详解 #### 一、知识点概览 在处理图像数据时,经常需要将图像对象(Image)转换为字节数组(Byte[])或者反之进行操作。这样的需求常见于网络传输、文件存储以及其他需要将图像...

    C# Byte数组转Int32 Short Float(浮点数)

    标题和描述提到的“C# Byte数组转Int32 Short Float(浮点数)”是指将字节数组中的数据转换为整型(Int32)、短整型(Short)以及浮点数(Float)的过程。以下是对这个主题的详细解释: **字节数组基础** 字节数组...

    Java中3DES加密解密示例(封装byte数组16进制互转)

    在 Java 中,我们可以使用 byte 数组来表示二进制数据,而 16 进制字符串是将 byte 数组转换为字符串的形式。在本示例中,我们提供了两个方法来实现 byte 数组和 16 进制字符串之间的互转。 在 byte2Hex 方法中,...

    Java byte数组与其他类型转换

    本文将深入探讨如何在Java中将byte数组与其他基本类型(如short、int、long)进行转换,这些转换在处理二进制数据、网络通信或序列化等方面至关重要。 首先,我们来看byte数组与short之间的转换。在Java中,byte...

Global site tag (gtag.js) - Google Analytics