【问题标题】:char[] into ascii and decimal value (double) javachar[] 转换成 ascii 和十进制值 (double) java
【发布时间】:2015-03-26 09:13:23
【问题描述】:

基于这个数组:

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

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

感谢您的帮助

【问题讨论】:

    标签: java char ascii


    【解决方案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();
    

    【讨论】:

      猜你喜欢
      • 2017-04-16
      • 2013-05-07
      • 1970-01-01
      • 2015-02-14
      • 2017-04-05
      • 2018-12-06
      • 2015-05-22
      • 1970-01-01
      • 2013-10-02
      相关资源
      最近更新 更多