gpt4 book ai didi

java - Java中将ascii逆向转换为整数十进制

转载 作者:行者123 更新时间:2023-12-01 16:26:02 26 4
gpt4 key购买 nike

大家好,感谢您提前提供的帮助。

我已经在网上搜索过,但并没有真正找到任何关于我最初的问题的具体信息。

我正在用 JAVA 开发一个程序,其主要目的是读取 .DAT 文件并从中提取某些值,然后根据提取的值计算输出,然后将其写回文件。

该文件由长度和格式相同的记录组成,因此访问起来应该相当简单,目前我正在使用循环和 if 语句来查找记录的第一次出现,然后通过用户输入确定每个记录的长度,然后循环遍历每个记录。

但是!该文件的第一条记录是空白的(或者我是这么认为的)。事实证明,第一条记录是文件其余部分的关键,因为前几个字符是 ascii,分别引用文件中包含的记录长度和记录数。

下面是在文件中找到的 ascii 值本身的列表(忽略其中包含的 ascii 值“”)

“#¼ ä”

“#gâ”

“ÇG@”

“千分之一”

“CòÈ”

“= 1/4”

我的一个 friend 多年前使用基本侦察进行编码,前 3 个字符指的是记录长度,后面的 9 个字符指的是记录数。

基本上我需要做的是将这个初始的 ascii 字符字符串转换为两位小数,以便计算出每个记录的长度和记录数。

任何帮助将不胜感激。

编辑...

请在下面找到过去用于访问该文件的基本代码,也许这会有所帮助?

    CLS
INPUT "Survey System Data File? : ", survey$
survey$ = "f:\apps\survey\" + survey$
reclen = 3004
OPEN survey$ + ".dat" FOR RANDOM AS 1 LEN = reclen
FIELD #1, 3 AS RL$, 9 AS n$
GET #1, 1
RL = CVI(RL$): n = CVI(n$)
PRINT "Record Length = "; RL
reclen = RL
PRINT "Number of Records = "; n
CLOSE #1

基本上我正在寻找的是类似的东西,但是在java中。

最佳答案

ASCII 是一种将字节中的位模式转换为字符的特殊方法,它为每个字符提供一个数值;字母“A”是 65。

在 Java 中,您可以通过将 char 转换为 int 来获取该数值(好吧,这会给您 Unicode 值,但对于 ASCII 字符,Unicode 值与 ASCII 相同,这并不重要) .

但是现在您需要知道长度是如何计算的:是否必须将这些值相加?或者将它们相乘?或者附加它们?或者将它们乘以 128^p(其中 p 是位置),然后将结果相加?并且,在后一种情况下,第一个字节是在位置 0 还是位置 3?

当然,记录数也是如此。

数据的另一种可能解释是字节是 BCD 编码数字。在这种情况下,每个半字节(4 位组)代表从 0 到 9 的一个数字。在这种情况下,您必须执行一些位操作来提取数字并将它们从左(最高)到右(最低)连接起来。至少你不必为这里的顺序和进一步的解释而苦苦挣扎……

但是由于 BCD 需要 8 位,如果文件确实包含 ASCII,这将不是正确的解释,因为 ASCII 是 7 位。

关于java - Java中将ascii逆向转换为整数十进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62146216/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com