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的主要内容,如果未能解决你的问题,请参考以下文章

C语言中 怎样把一个int转换成char

BCD码转换成ASCII值

进制转换

任意十进制数转换成ASCII码C语言程序

无符号字符数组的十进制 ascii 值

ASCII数字对应表