在Java中把反转的ascii转换为整十数。

问题描述 投票:0回答:1

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

我在网上找了很多资料,但都没有找到任何关于我最初问题的具体资料。

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

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

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

以下是在文件中发现的ascii值本身的列表(忽略""ascii值包含在文件中

"#¼ ä "

"#g"

"ÇG @"

"lj ‰ "

"Çò È"

"=¼ "

我的一位朋友多年前曾用Basic编码,他说前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。

java decimal ascii
1个回答
0
投票

ASCII是一种特殊的方式,将一个字节中的位模式翻译成一个字符,并赋予每个字符一个数值,对于字母'A'就是这样的65。

在Java中,你可以通过将char转换为int来获得这个数值(好吧,这给了你Unicode值,但是对于ASCII字符来说,Unicode值和ASCII是一样的,这并不重要)。

但是现在你需要知道长度是如何计算的:你是要把这些值相加?还是相乘?还是追加它们?还是用128^p(其中p是位置)乘以它们,然后将结果相加?而在后一种情况下,第一个字节是在位置0上还是位置3上?

当然,记录数也一样。

数据的另一种可能的解释是,字节是BCD编码的数字。在这种情况下,每个nibble(4bit集)代表一个从0到9的数字。在这种情况下,你必须做一些位操作来提取这些数字,并将它们连在一起,从左(最高)到右(最低)。至少你不用在这里纠结于序列和进一步的解释......。

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

© www.soinside.com 2019 - 2024. All rights reserved.