【问题标题】:Open Text From a Given Offset (Java)从给定偏移量打开文本 (Java)
【发布时间】:2016-06-22 15:04:35
【问题描述】:

我正在尝试制作一个 Java 程序来编辑存储在 .bin 文件的偏移量中的一些文本(该文件是十六进制,但它是一个 .bin 文件)。这是我的班级尝试这样做:

import org.apache.commons.codec.DecoderException;
import org.apache.commons.codec.binary.Hex;
import java.io.*;

public class Class{
    public static String getOffsetText(String offset, File bin){
        String txt = null;
        try{
            byte[] off = Hex.decodeHex(offset.toCharArray());
            txt = new String(off, "UTF-8");
        }catch(DecodeException | UnsupportedEncodingException e){
            e.printStackTrace();
        }
        return txt;
    }
}

这是错误:

org.apache.commons.codec.DecoderException: Illegal hexadecimal character x at index 1
    at org.apache.commons.codec.binary.Hex.toDigit(Hex.java:178)
    at org.apache.commons.codec.binary.Hex.decodeHex(Hex.java:91)

第一个注意事项:我的带有 main 方法的类只是尝试在 GUI 中使用此方法。此外,Eclipse 没有显示我的代码有任何错误或警告。

第二个注意事项:我拥有的 .bin 文件可能已加密,但我不完全确定它们是否加密。

【问题讨论】:

    标签: java hex offset


    【解决方案1】:

    首先,您的函数似乎不需要接收文件,因为它只计算偏移量。

    我认为问题在于偏移字符串的格式为 "0x12346" ... ,因此当它尝试解码 x 时会失败,因为它不是数字。 我建议您检查字符串是否以 0x 开头,如果是则删除它们并将其余部分解析为 hexa

    【讨论】:

    • 现在它给了我另一个错误:org.apache.commons.codec.DecoderException: Odd number of characters. at org.apache.commons.codec.binary.Hex.decodeHex(Hex.java:82)
    • 在下面的链接stackoverflow.com/a/10143209/6372296中有答案
    • 好的!现在没有错误。但是,应该包含文本的文本框始终为空。即使我尝试更改偏移量。
    猜你喜欢
    • 1970-01-01
    • 2013-07-14
    • 2020-06-27
    • 1970-01-01
    • 2016-11-20
    • 2021-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多