【问题标题】:Convert in reverse ascii to whole decimal in Java在Java中将反向ASCII转换为整数十进制
【发布时间】:2020-06-02 06:37:42
【问题描述】:

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

我已经搜索了网络,并没有真正找到关于我最初的问题的任何具体内容。

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

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

但是!该文件的第一条记录是空白的(或者我认为)。事实证明,第一个记录是文件其余部分的关键,因为前几个字符是 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 中。

【问题讨论】:

  • 正方形只是一个不可打印的字符——它可以是任何值。如果您以十六进制形式转储值会更有意义。尝试类似 od -t x1 文件名
  • 更多关于使用的 BASIC 方言的信息可能会有所帮助……
  • 据我了解,前 5 行代码是打开指定的文件,魔术发生在第 6 行和第 8 行。 FIELD #1, 3 AS RL$, 9 AS n$,这里它引用文件中的第一个字段为 3 个字符,它设置为变量 RL(记录长度),然后它引用下一个变量如下它设置为 n(记录总数)的 9 个字符。第 8 行是从 ascii 到 integer 的转换。这两个输入是我所追求的。特别是如何将它们从 ascii 文本字符转换为可用的十进制数字。
  • 这里是基本的CVI功能的描述。 “CVI 函数将包含整数的 2 字节字符串转换为实际整数值。”

标签: java decimal ascii


【解决方案1】:

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

在 Java 中,您可以通过将 char 转换为 int 来获得该数值(好的,这为您提供了 Unicode 值,但对于 ASCII 字符,Unicode 值与 ASCII 相同,这没关系) .

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

当然,记录数也是如此。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 2012-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-14
    相关资源
    最近更新 更多