char[] 转换成 ascii 和十进制值 (double) java
Posted
技术标签:
【中文标题】char[] 转换成 ascii 和十进制值 (double) java【英文标题】:char[] into ascii and decimal value (double) java 【发布时间】:2015-03-26 09:13:23 【问题描述】:基于这个数组:
final char[] charValue = 'u', ' ', '','+' ;
我想在 Java 中打印 double 值和 ascii 值。 我在互联网上找不到合适的解决方案。我刚刚发现如何将单个字符转换为整数值。但是很多角色呢? 主要问题是,我有一个大的 char[] 并且存储了一些 double 和 int 值。对于 double 值,它们存储在 4 个字节大小和整数 1 或 2 个字节内,所以我必须读取所有这些并转换为 double 或整数。
感谢您的帮助
【问题讨论】:
【参考方案1】:在设计 java 时,C char
用于二进制字节和文本。
Java 明确区分了二进制数据 (byte[], InputStream/OutputStream
) 和 Unicode 文本 (char, String, Reader/Writer
)。因此 Java 具有完整的 Unicode 支持。二进制数据byte[]
,需要信息:它们使用的编码,以便转换为文本:char[]/String
。
在 Java 中,char[]
很少被使用(就像在 C/C++ 中一样),而且似乎 byte[]
是有意的,因为你提到了 4 个元素用于 int
等等。一个 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();
【讨论】:
以上是关于char[] 转换成 ascii 和十进制值 (double) java的主要内容,如果未能解决你的问题,请参考以下文章