使用ultraEdit拷贝二进制文件内容时的异常

使用ultraEdit拷贝二进制文件内容时的异常


        由于有时操作二进制文件,需要编辑文件内容,在使用ultraEdit做复制粘贴时遇到过失败的情况。具体来说,我使用ultraEdit以二进制的形式打开一个二进制文件,然后希望能将一段内容进行复制到另一个地方,但是在粘贴时发现结果不是我希望的样子。

例如:希望复制如下8字节,
30 00 00 55 66 00 77 00
实际粘贴后只是复制了第一个字节。
        后来通过各种查询后,终于明白了:
        windows下的复制粘贴是对文本操作。对于特殊字符,特别是0,即字符‘\0’,是字符串结束符号,会截断复制的内容。
        对于几字节的内容,我可以手动键入。可是对于很长的内容怎么办呢,总不能一个一个的敲进去吧?我使用的办法是使用文件的形式进行拼接。首先,复制文件,将需要的部分留下,其余部分都剪切掉(说明,剪切操作还是好用的)。这样,就可以将需要拼接的部分,分别存放在几个文件中,然后,在dos界面下,进行拷贝操作,命令如下:
copy /b 1.bin + 2.bin dest.bin
以上命令将2个文件按顺序拼接,并存放到名为 dest.bin 的文件中了。

        后来,在网上看到一个更好的解决方法:
        第一步: 打开文件;
        第二步: 进入二进制编辑模式(可以用快捷键 Ctrl + H);
        第三步: 应把ultraEdit的菜单中的"编辑(edit)"-->"粘贴板(clipboards)" 选到 "用户粘贴板 n (User Clipboard n)",如果用windows粘贴板(windows clipboard) 有可能出现数据被截断的现象;
        第四步: 然后用 Ctrl + C 从源文件里拷贝数据, 再用 Ctrl + V 粘贴到目标文件的相应位置即可。

        另外,使用一个最新的ultraEdit软件版本也能解决问题。
        我以前使用版本为 11.10,遇到粘贴二进制异常的问题,现在更新为版本 17.30,就再没有遇到此问题了。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的二进制文件查看器的实现,可以在控制台输出二进制文件内容: ```python import argparse def hexstr(byte_str): """ 将字节串转换成十六进制字符串 """ return " ".join("{:02x}".format(x) for x in byte_str) def ascii_str(byte_str): """ 将字节串中的不可打印字符转换成点号 """ return "".join(chr(x) if 32 <= x < 127 else "." for x in byte_str) def print_hexdump(data, start_address=0, bytes_per_line=16): """ 打印二进制文件的十六进制和ASCII码表示 """ address_format = "{:08x}" hex_format = "{:<47}" ascii_format = "{}" for i in range(0, len(data), bytes_per_line): line_data = data[i:i+bytes_per_line] line_address = start_address + i hex_str = hexstr(line_data) ascii_str = ascii_str(line_data) print(address_format.format(line_address), hex_format.format(hex_str), ascii_format.format(ascii_str)) if __name__ == '__main__': parser = argparse.ArgumentParser(description="A simple binary file viewer.") parser.add_argument("filename", help="The name of the binary file to view.") parser.add_argument("--start", type=int, default=0, help="The starting address to view (in hexadecimal).") parser.add_argument("--bytes", type=int, default=16, help="The number of bytes to display per line.") args = parser.parse_args() with open(args.filename, "rb") as f: data = f.read() print_hexdump(data, args.start, args.bytes) ``` 运行该程序,需要指定要查看的二进制文件的名称,以及可选的起始地址和每行字节数。例如,要查看名为“myfile.bin”的文件内容,可以执行以下命令: ``` python hexdump.py myfile.bin --start 0x100 --bytes 32 ``` 将在控制台上输出类似于以下内容内容: ``` 00000100 3c a5 2b 6e 30 96 4d 84 a8 2e 2e 2e 00 00 00 00 <.+n0.M......... 00000110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ ``` 左边是十六进制地址,中间是16个字节的十六进制值,右边是相应的ASCII码表示。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值