[英]Convert long value to char sequence in Java
我想很长的价值在这个caluculator转换为字符序列,例如在这里 。
我真的不知道如何将该值转换为ASCII序列(或者如果它甚至是正确的)。 我认为ASCII值是8位长,这意味着我必须将long值转换为二进制,然后将其拆分为8位块,这是正确的吗?
严格地说,ASCII字符是7位长,我们通常只是在开头添加一个额外的0
来获得8位。 ASCII扩展(例如ISO 8859)具有8位长字符。 您链接的计算器似乎正在使用其中一个扩展名。
在Java中,long有64位(其中一个位用于符号),所以你确实可以有8个8位长的字符块。
首先,你必须将你的long转换成一个字节数组 (并非所有这个问题都与这种情况有关,但其中一些是 - 特别是提到ByteBuffer的部分)。
byte[] bytes = ByteBuffer.allocate(8).putLong(someLong).array();
获得数组后,使用简单的强制转换将每个字节转换为char。
编辑:您可以使用java.lang.String(byte [])构造函数,而不是手动转换每个字符。
String str = new String(bytes);
请注意,这将使用平台的默认字符集。 如果不希望这样,您可以使用其中一个也采用字符集的构造函数。
不。 有几种方法可以做到这一点。 一种方法是使用java.math.BigInteger,它有一个名为toByteArray()的方法。 如果它适合您的问题,请尝试它。
尝试使用此代码将long值转换为4-char数组。
//convert long to char array
long longValIn = 229902744986400000L;
ByteBuffer bb1 = ByteBuffer.allocate(8);
bb1.putLong(longValIn);
char [] charArr = new char[4];
charArr[0] = bb1.getChar(0);
charArr[1] = bb1.getChar(2);
charArr[2] = bb1.getChar(4);
charArr[3] = bb1.getChar(6);
//convert char array to long
ByteBuffer bb2 = ByteBuffer.allocate(8);
bb2.putChar(0,charArr[0]);
bb2.putChar(2,charArr[1]);
bb2.putChar(4,charArr[2]);
bb2.putChar(6,charArr[3]);
long longValOut = bb2.getLong(0);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.