基于这个数组:
final char[] charValue = { 'u', ' ', '}','+' };
我想在Java中打印它的double值和ascii值。 我无法在互联网上找到适当的解决方案。我刚刚找到了如何将单个字符转换为整数值。但是很多角色呢? 主要的问题是,我有一个大的char []和一些double和int值存储在。对于double值,它们存储在4个字节大小和整数1或2个字节,所以我必须读取所有这些并转换为double或整数。
谢谢你的帮助
答案 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();