【发布时间】:2015-06-15 17:18:36
【问题描述】:
所以我有一个文本字符串,并想将其转换为包含文本二进制文件的字符串, 然后将该二进制字符串转换为保存二进制的字节数组
然后将该字节数组转换为 long
然后想逆向处理
目前为止
public class Conversions
{
public Conversions()
{
}
public byte[] strToByteArray(String inPlainString)
{
int byteValue;
byte[] retArray = null;
byte[] tempArray = inPlainString.getBytes();
StringBuilder binary = new StringBuilder();
for (byte tempByte: tempArray)
{
byteValue = tempByte;
for (int ii = 0; ii < 8; ii++)
{
if((byteValue & 128) == 0)
{
binary.append(0);
}
else
{
binary.append(1);
}
byteValue = byteValue << 1;
}
binary.append(' ');
}
retArray = binary.toString().getBytes();
return retArray;
}
public String byteArrayToStr(byte[] inArray)
{
return inArray.toString();
}
public long getLongFromBytes(byte[] inByteArray, int inStart)
{
long retLong = 0;
for (int ii=0; ii<8; ii++)
{
byte value;
if ((inStart+ii) < inByteArray.length)
{
value = inByteArray[inStart+ii];
}
else
{
value = 0;
}
retLong = retLong <<8 | (value & 0xFFL);
}
return retLong;
}
public byte[] getBytesFromLong(long inLong)
{
byte[] retByteArray = new byte[8];
for (int ii = 7; ii >= 0; ii --)
{
retByteArray[ii] = (byte)(inLong & 0xFF);
inLong = inLong >> 8;
}
return retByteArray;
}
public byte[] combineByteArray(byte[] inArrOne, byte[] inArrTwo)
{
byte[] retByteArray = new byte[inArrOne.length + inArrTwo.length];
for (int ii = 0; ii < retByteArray.length; ii++)
{
if (ii < inArrOne.length)
{
retByteArray[ii] = inArrOne[ii];
}
else
{
retByteArray[ii] = inArrTwo[ii - inArrOne.length];
}
}
return retByteArray;
}
}
但是当我尝试这样测试它时
Conversions convert = new Conversions();
byte[] test = convert.strToByteArray("Hello there chaps");
System.out.println("\n test1: " + test.toString() + "\n");
long testL = convert.getLongFromBytes(test, 0);
byte[] test2 = convert.getBytesFromLong(testL);
System.out.println("\n test2: " + test2.toString() + "\n");
String testStr = convert.byteArrayToStr(test2);
System.out.println("\n test string: " + testStr + "\n");
我得到以下信息
test1: [B@1bc4459
test2: [B@12b6651
test string: [B@12b6651
我哪里出错了? / 有人可以告诉我如何去转换文本 -> 二进制的字节数组 -> 长 long -> 二进制的字节数组 -> 文本
【问题讨论】:
-
在 byte[] 上调用 toString 只会打印它的引用。要从 byte[] 创建字符串,请使用 new String(array)
标签: java arrays string binary byte