char []成ascii和十进制值(double)java

时间:2015-03-26 09:13:24

标签: java char ascii

基于这个数组:

final char[] charValue = { 'u', ' ', '}','+' };

我想在Java中打印它的double值和ascii值。 我无法在互联网上找到适当的解决方案。我刚刚找到了如何将单个字符转换为整数值。但是很多角色呢? 主要的问题是,我有一个大的char []和一些double和int值存储在。对于double值,它们存储在4个字节大小和整数1或2个字节,所以我必须读取所有这些并转换为double或整数。

谢谢你的帮助

1 个答案:

答案 0 :(得分:1)

设计java时,C char用于二进制字节和文本。

Java明确区分了二进制数据(byte[], InputStream/OutputStream)和Unicode文本(char, String, Reader/Writer)。因此,Java具有完整的Unicode支持。二进制数据byte[]需要信息:其使用的编码,以便可转换为文本:char[]/String

在Java中,很少会使用char[](如在C / C ++中),并且似乎byte[]是有意的,因为你提到了用于int等的4个元素。 char是16位,包含UTF-16文本。

对于这种情况,可以使用ByteBuffer包装byte[]或从内存映射文件中取出。

<强> 编写

ByteBuffer buf = ByteBuffer.allocate(13); // 13 bytes
buf.order(ByteOrder.LITTLE_ENDIAN); // Intel order
buf.putInt(42);          // at 0
buf.putDouble(Math.PI);  // at 4
buf.put((byte) '0');     // at 12
buf.putDouble(4, 3.0);   // at 4 overwrite PI
byte[] bytes = buf.array();

<强>

ByteBuffer buf = ByteBuffer.wrap(bytes);
buf.order(ByteOrder.LITTLE_ENDIAN); // Intel order
int a = buf.getInt();
double b = buf.getDouble();
byte c = buf.get();