我将数字写成每个2字节的ASCII码,浪费了很多空间。我想将这些数字转换为相应的ASCII码以节省空间。
有什么想法吗?
答案 0 :(得分:3)
如果您指的是字符,Java会将每个字符使用两个字节作为其Unicode支持的一部分。如果给出ASCII值,Java将使高位字节为零。你不会保存一件事。
如果你的意思是浮点数,双精度数或整数,那么每个值的字节数也是固定的。
你正在咆哮错误的树。无论你做什么,我都不认为这会为你节省一切。如果你需要那种优化而不是Java,你最好还是编写C或C ++。
我首先想到的是,这是一种数据不支持的想象优化。唯一可以证明这样的事情的应用是大规模的科学计算。即使这样也不合理,因为你需要的精度高于每个值的一个字节。
答案 1 :(得分:2)
您可以在默认类型的类上使用解析方法。例如,如果这些数字是整数并存储为字符串“34”,则可以使用Integer.parseInt(“34”)返回单个int,其值为34.类似于Double,Float和Long。
答案 2 :(得分:0)
您想将十六进制数转换为字节吗?如果是这样,这是你的答案:
Convert a string representation of a hex dump to a byte array using Java?
如果要将数字转换为字节 - > http://snippets.dzone.com/posts/show/93
答案 3 :(得分:0)
将两位ASCII字符串转换为一个字节。当您需要ASCII返回时,只需将其转换为字符串即可。以下代码显示了如何为“95”执行此操作。
public class Main { public static void main(String[] args) { byte b = Byte.parseByte("95"); String bString = "" + b; } }
如果您需要更改它们存储在文件中的方式,只需将两位数文本数字作为字符串读取,然后将其作为字节写入另一个文件。