【问题标题】:How to convert numbers stored as two character ASCII strings to binary?如何将存储为两个字符 ASCII 字符串的数字转换为二进制?
【发布时间】:2012-01-06 23:34:32
【问题描述】:

我将数字写成 ASCII 码,每个 2 个字节,这会浪费很多空间。我想将这些数字转换为它们对应的 ASCII 码以节省空间。

有什么想法吗?

【问题讨论】:

  • 你能给我们举个例子吗?您的标题与问题不符。
  • 你想把 ASCII 码转换成 ASCII 码吗?
  • 我将数字作为字符存储在文件中,我想将它们存储为二进制数字以节省空间
  • 我下面的帖子回答了你的问题吗?

标签: java binary ascii


【解决方案1】:

如果您指的是字符,Java 使用每个字符两个字节作为其 Unicode 支持的一部分。如果您提供 ASCII 值,Java 将使高字节为零。你不会保存任何东西。

如果您的意思是浮点数、双精度数或整数,则每个值的字节数也是固定的。

你找错树了。不管你做什么,我认为这不会为你节省任何东西。

如果您需要这种优化,最好编写 C 或 C++,而不是 Java。

我的第一个想法是,这是一个没有数据支持的想象优化。唯一可以证明这样的事情的应用程序是大规模的科学计算。即使这样也不能证明这一点,因为您需要比每个值一个字节更高的精度。

【讨论】:

  • 看来 OP 只是想将 ASCII 数据转换为二进制数据,这在 Java 中也可以正常工作。
【解决方案2】:

您可以在默认类型的类上使用解析方法。例如,如果这些数字是整数并且存储为字符串“34”,您可以使用 Integer.parseInt("34") 返回一个值为 34 的单个 int。对于 Double、Float 和 Long 也是如此。

【讨论】:

  • 没错,但我需要一种方法将这些数字存储为二进制数字而不是字符。然后在运行程序时将它们转换为字符..有什么想法吗?!
【解决方案3】:

您想将十六进制数转换为字节吗?如果是这样,这就是你的答案:

Convert a string representation of a hex dump to a byte array using Java?

如果要将数字转换为字节 -> http://snippets.dzone.com/posts/show/93

【讨论】:

  • 不,我将数字存储为字符,我想将它们作为数字存储在文件中以节省一些空间。
【解决方案4】:

将两位 ASCII 字符串转换为一个字节。当您需要返回 ASCII 时,只需将其转换为字符串即可。以下代码显示了如何为“95”执行此操作。

公共类主要{ 公共静态无效主要(字符串[]参数){ 字节 b = Byte.parseByte("95"); 字符串 bString = "" + b; } }

如果您需要更改它们在文件中的存储方式,只需将两位文本数字作为字符串读取,然后将它们作为字节写入另一个文件。

【讨论】:

    猜你喜欢
    • 2014-06-14
    • 1970-01-01
    • 1970-01-01
    • 2015-01-20
    • 1970-01-01
    • 2012-03-30
    • 1970-01-01
    • 2012-07-20
    • 1970-01-01
    相关资源
    最近更新 更多