binaryfiles - 使用 Extendscript 编写二进制文件。文件大小不正确
问题描述
除了我的问题,我正在使用 Extendscript 从 Photoshop 中将十六进制颜色列表写入二进制文件。到目前为止,一切都很好。
只有用以下代码编写的二进制文件是 119 字节。使用 Sublime Text 3 剪切、粘贴和保存时,它只有 48 个字节,这会在以后导致复杂性。
这是我第一次进入二进制领域,所以我可能有点迷茫。我怀疑这要么是一个编码问题(这可以解释 2.5 文件大小),要么是在尝试以文字、字符为字符的意义重新创建文件时做了一些非常错误的事情。*
// Initially, my data is a an array of strings
var myArray = [
"1a2b3c",
"4d5e6f",
"a10000",
"700000",
"d10101",
"dc0202",
"c30202",
"de0b0b",
"d91515",
"f06060",
"fbbaba",
"ffeeee",
"303030",
"000000",
"000000",
"000000"
]
// I then separate them to four character chunks
// in groups of 8
var data = "1a2b 3c4d 5e6f a100 0070 0000 d101 01dc\n" +
"0202 c302 02de 0b0b d915 15f0 6060 fbba\n" +
"baff eeee 3030 3000 0000 0000 0000 0000";
var afile = "D:\\temp\\bin.act"
var f = new File(afile);
f.encoding = "BINARY";
f.open ("w");
// f.write(data);
// amended code
for (var i = 0; i < data.length; i++)
{
var bytes = String.fromCharCode(data.charCodeAt(i));
f.write(bytes);
}
f.close();
alert("Written " + afile);
* ...或者它是我的 VHS 上的跟踪。
解决方案
我在 JavaScript 上很垃圾,但我已经一起破解了一些东西,它将向您展示如何将 3 个字节的十六进制写入二进制文件。我希望这足以让你弄清楚如何做剩下的事情!
我将此文件保存为/Users/mark/StackOverflow/AdobeJavascript.jsx
alert("Starting");
// Open binary file
var afile = "/Users/mark/StackOverflow/data.bin"
var f = new File(afile);
f.encoding = "BINARY";
f.open ("w");
// Define hex string
str = "1a2b3c"
for(offset=0;offset<str.length;offset+=2) {
i = parseInt(str.substring(offset, offset+2), 16)
f.write(String.fromCharCode(i));
}
f.close();
alert("Done");
如果你转储data.bin
你会看到 3 个字节:
xxd data.bin
00000000: 1a2b 3c
您可以通过简单地将字符串更改为:
str = "1a2b3c"+ "4d5e6f"+ "a10000";
我还发现了如何从终端中的 shell 脚本运行 ExtendScript,这是我的“快乐之地”,所以我将在此处添加它以供我自己参考:
#!/bin/bash
osascript << EOF
tell application "Adobe Photoshop CC 2019"
do javascript "#include /Users/mark/StackOverflow/AdobeJavascript.jsx"
end tell
EOF
这个答案的相应阅读部分在这里。
推荐阅读
- c# - Datagridview 到 CSV 未正确保存
- python - 如何在 HoloViews 中获取小部件“处理程序”
- symfony - 在 Twig 中打印包含需要依次打印的子变量的变量
- css - 更改 wordpress 中的字体系列覆盖 WPBakery 页面构建器
- arrays - 如何在 PostgreSQL 中创建类型?
- apache-spark - 分别配置 Spark 和 Hadoop(haddop 和 spark 使用哪个版本)
- madge - Madge 跳过导入的打字稿文件
- powershell - 删除 Pester 模拟函数
- java - 我想创建一条将 2 个 JTable 连接在一起的直线
- docker - 使用 jhipster monolith 应用程序构建 docker 映像并推送到我的 dockerhub