【问题标题】:String of text To binary string To byte array To float and back Java文本字符串 二进制字符串 字节数组 浮点数和返回 Java
【发布时间】: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


【解决方案1】:

在 byte[] 上调用 toString 只会打印它的引用。要从 byte[] 创建字符串,请使用:

byte[] array = // ..
String s = new String(array)

【讨论】:

    猜你喜欢
    • 2018-03-08
    • 1970-01-01
    • 2014-04-28
    • 2020-12-20
    • 2012-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多