[Java] 纯文本查看 复制代码
/*┌=======================文件信息=========================
*||⑴程 序 员: Laoz-CTCTJCU
*||⑵程序名称:
*||⑵版本编号: v0.01
*||⑶创建时间: 2021/3/18 下午6:18:36
*||⑷当前编写: Laoz-CTCTJCU
*||⑸修改时间: 2021/3/20 下午3:05:05
*||⑹描述说明: 我的工具程序之1--将2进制文件转16进制字串并格式化长行短写,
*|| 同时,计算该串和原文件的MD5值存txt备用.16制串制式文本写为txt文件.
*|| 修 饰 键: ^==ctrl, !==alt, +==shift, #==win
*└========================================================
*/
#SingleInstance, Force
SendMode Input
SetWorkingDir, %A_ScriptDir%
#Include lib\lib.ahk ;包含入主函数库文件
FileSelectFile, 图像文件, , , 请选择图片, 图片文件(*.jpg; *.png; *.bmp) ;选择文件
if (图像文件 = "" ) ;如果没有打开文件,暨变量为空则
{
MsgBox, 0, 错误, 您未选择任何文件
Reload ;重启脚本
}
;;;;;1、将图片文件读为16进制字串并写入txt文件保存备用
16进制文本 := file2hex(图像文件) ;调用库函数将图片读为16进制文本串
输出文本文件 := A_Temp . "\akpngbmpjpgpcx2hextext.txt" ;将在系统临时目录生成文件
FileDelete, % 输出文本文件 ;创建一个空文件,或者若该文件有内容则清空内容
FileAppend, % 16进制文本, % 输出文本文件 ;将该16进制文本写入文本文件,两个变量都要加%,也是坑
Run, % 输出文本文件 ;打开这个文件看看
;注意,记事本打开这个文件,如果没有设置自动换行的化,会是一个长长长长长长长长长长长的行
;勾选记事本菜单-格式-自动换行之后,长行会随着记事本窗口大小进行自动的换行显示.
;;;;;2、计算该16进制字串和原始图片文件的MD5值存为txt文本文件备用
16进制文本MD5值 := MD5(16进制文本) ;调用函数计算md5值
Clipboard := 16进制文本MD5值 ;运算结果放到剪贴板,这句纯粹为了方便进行粘贴操作
运算结果0 := 16进制文本MD5值 ;运算结果赋值给变量
原始图片文件MD5值 := FileMD5( "s:\bb.png", 4) ;调用函数计算文件的md5值
Clipboard := 原始图片文件MD5值
运算结果1 := 原始图片文件MD5值
输出文本文件2 := A_Temp . "\akpngbmpjpgpcx2md5filemd5.txt" ;A_Temp内部变量代表系统临时文件夹
md5内容写入文本 := "字符串值:`n" . 运算结果0 . "`n" . "文件值:`n" . 运算结果1
FileDelete, % 输出文本文件2 ;创建一个空文件,或者若该文件有内容则清空内容
FileAppend, % md5内容写入文本, % 输出文本文件2 ;将该16进制文本写入文本文件
;这里注意:上面一句中两个变量都要加%,都要加啊! 这也是坑
Run, % 输出文本文件2
;;;;;3、将该字串或txt文件格式化为长行短写便于编程界面查看的格式,也就是加硬回车断行
;;;;;3-1、将该字串格式化为长行短写的格式后,写入txt文件保存
;16进制文本 := "123456789abcdef" ;测试下面语句用临时变量
字串长度Length := StrLen(16进制文本) ;计算16进制字串长度,应该是文件字节数的2倍
输出文本文件3 := A_Temp . "\akpnbmjppc2hex2formattext.txt"
FileDelete, % 输出文本文件3 ;创建一个空文件,或者若该文件有内容则清空内容
当前截取内容 := "( Join LTrim `;重要参数,必须保留`n`""" ;
;AutoHotKey中,转义符为“ ` ”,暨esc下面的键.
;特别注意,上面一句,正文中的";"号,需用"`"转义. 之后用"`n"表示分行
;上一句最后转义“ `"" ”内容,表示转义为“ " ”号.因为换行后下一行第一个字符为",哈哈
;AutoHotKey用两个双引号来表示一个原义的双引号
;见手册中章节:#EscapeChar (和转义序列的说明),该命令V2已经启用,可搜索转义序列
FileAppend, % 当前截取内容, % 输出文本文件3 ;将前导的格式先写入文本文件
一行字符数 := 80 ;按照80个字符一行
循环次数 := Ceil(字串长度Length / 一行字符数) ;计算要截取次数并向上取整
While, A_Index <= 循环次数 ;循环截取该16进制字串
{
截取点 := ((A_Index -1) * 一行字符数) + 1
If (A_Index < 循环次数) ;非最后一行都加分行符号
{
当前80字符 := SubStr(16进制文本, 截取点, 一行字符数) . "`n"
}
Else ;最后一行则不加分行符号,令行处理
{
当前80字符 := SubStr(16进制文本, 截取点, 一行字符数)
当前80字符 := 当前80字符 . "`""`n)" ;将最后一行字串加收尾的字符内容
}
FileAppend, % 当前80字符, % 输出文本文件3 ;追加被截取的80字符
}
Run, % 输出文本文件3
Pause
;;;;;3-2、将txt文件读入,之后格式化为长行短写的脚本适用格式后,写到另外txt文件
;;这个就不写了,累啊,有3-1的语句段就可以啦