簡體   English   中英

在 Java 中將反向 ascii 轉換為整數十進制

[英]Convert in reverse ascii to whole decimal in Java

大家好,感謝您提前提供的幫助。

我已經搜索了網絡,並沒有真正找到關於我最初的問題的任何具體內容。

我有一個正在 JAVA 中開發的程序,其主要目的是讀取 .DAT 文件並從中提取某些值,然后根據提取的值計算 output 然后將其寫回文件。

該文件由長度和格式相同的記錄組成,因此訪問起來應該相當簡單,目前我正在使用循環和 if 語句來查找記錄的第一次出現,然后通過用戶輸入確定每條記錄的長度,然后循環遍歷每條記錄。

然而。 該文件的第一條記錄是空白的(或者我認為)。 事實證明,這第一條記錄是文件 rest 的關鍵,因為前幾個字符是 ascii 並分別引用文件中包含的記錄長度和記錄數。

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

“#¼ ä”

“#g-”

“ÇG@”

“C‰ ‰ ”

“ÇòÈ”

“=¼”

我的一位朋友多年前使用 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 中。

ASCII 是一種將字節中的位模式轉換為字符的特殊方法,它賦予每個字符一個數值; 因為字母“A”是這個 65。

在 Java 中,您可以通過將 char 轉換為 int 來獲得該數值(好的,這為您提供了 Unicode 值,但對於 ASCII 字符 Z7F6C02D96265DD1D347B1101 與 ASCII 值相同,DE1101 無關緊要)。

但是現在您需要知道長度是如何計算的:您必須添加這些值嗎? 還是將它們相乘? 還是 append 他們? 或者將它們乘以 128^p,其中 p 是 position,然后將結果相加? 而且,在后一種情況下,第一個字節是 position 0 還是 position 3?

當然,記錄數也是如此。

數據的另一種可能解釋是字節是 BCD 編碼的數字。 在這種情況下,每個半字節(4 位集合)代表一個從 0 到 9 的數字。在這種情況下,您必須進行一些位操作來提取數字並將它們從左(最高)到右(最低)連接起來。 至少你不必為這里的順序和進一步的解釋而苦惱……

但是由於 BCD 需要 8 位,如果文件確實包含 ASCII,這將不是正確的解釋,因為 ASCII 是 7 位的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM