Transform

执行各种数学计算, 按位运算以及类似 ASCII/Unicode 转换的任务.

Transform, OutputVar, SubCommand, Value1 , Value2

OutputVar 参数是用来保存结果的变量的名称. SubCommand, Value1Value2 参数相互依赖, 它们的用法描述如下.

子命令

对于 SubCommand, 指定以下命令之一:

不推荐(有更简洁的函数或运算符):

Unicode

获取或保存剪贴板上的 Unicode 文本(仅适用于 ANSI 构建).

Transform, OutputVar, Unicode , String

注: 使用 ClipboardAll 的方法可以保存和恢复整个剪贴板的内容, 这样可以在不丢失剪贴板原始内容情况下使用这个子命令去操作.

此子命令的两种操作模式举例如下:

Transform, OutputVar, Unicode  ; 获取剪贴板中的 Unicode 文本为 UTF-8 字符串.
Transform, Clipboard, Unicode, %MyUTF_String%  ; 把 Unicode 文本放到剪贴板中.

在上面的第二个例子中, 可以随意使用原义的 UTF-8 字符串代替 %MyUTF_String%.

使用热键(例如下面这个) 来得到与指定的 Unicode 字符串相应的 UTF-8 字符串:

^!u::  ; Control+Alt+U 热键.
MsgBox Copy some Unicode text onto the clipboard, then return to this window and press OK to continue.
Transform, ClipUTF, Unicode
Clipboard := "Transform, Clipboard, Unicode, %ClipUTF%`r`n"
MsgBox The clipboard now contains the following line that you can paste into your script. When executed, this line will cause the original Unicode string you copied to be placed onto the clipboard:`n`n%Clipboard%
return

注: Send {U+nnnn} 命令是生成 Unicode 字符的一种备用方法.

Deref

展开变量引用和包含在其他变量中的转义序列.

Transform, OutputVar, Deref, String

任何糟糕格式的变量引用在展开时会被忽略. 如果将 OutputVar 展开为它自身, 情况也是如此; 换句话说, 在 String 变量中任何对 OutputVar 的引用在展开时会被忽略(但请注意 String 本身可以是 %OutputVar%). 在函数内, String 中的每个变量总是被解析为局部变量, 只有在变量不存在时, 它才会解析为全局变量(如果全局变量也没有则为空).

在下面的例子中, 如果 Var1 包含字符串 "test" 而 Var2 包含原义的字符串 "%Var1%", OutputVar 会被赋值为字符串 "test".

Var1 := "test"
Var2 := "%Var1%"
Transform, OutputVar, Deref, %Var2%  ; OutputVar 为 test.
Var3 := "%Var2%"
Transform, Out, Deref, %Var3%  ; Out 为 %Var1%.
Transform, Out, Deref, %Out%  ; Out 为 test.
Transform, Var1, Deref, %Var2%  ;对 Var1 的引用被忽略, Var1 设为空.

HTML

通过转换字符为其 ASCII 值, 值超过 127 转换为他们的 HTML 名称, 将 String 转换为它的 HTML 等效字符(例如 £ 变为 £).

Transform, OutputVar, HTML, String , Flags

此外, 这四个字符 "&<> 依次被转换为 &quot;&amp;&lt;&gt;. 最后, 每个换行符(`n) 被转换为 <br>`n(即 <br> 后面跟着一个换行符). 忽略 Flags 参数.

Unicode 版可执行文件: 除了上述的功能外, Flags 可以是下列值. 如果省略, 则它默认为 1.

Asc

不推荐: 不建议在新脚本中使用. 而是使用 Asc().

检索 String 中第一个字符的字符码(一个介于 1 到 255 之间的数字, 或在 Unicode 版本中为 1 到 65535).

Transform, OutputVar, Asc, String

如果 String 为空, 则 OutputVar 也会被置空. 例如: Transform, OutputVar, Asc, %VarContainingString%. 还可以使用 Ord(), 用于支持 Unicode 补充字符集.

Chr

不推荐: 不建议在新脚本中使用. 而是使用 Chr().

检索字符码 Number 对应的单个字符.

Transform, OutputVar, Chr, Number

如果 Number 不是 1 到 255(或在 Unicode 版本中的 1 到 65535) 之间的数字, OutputVar 会被置空来表明此问题. 例如: Transform, OutputVar, Chr, 130. 不同于 Chr(), 这个子命令不支持 Unicode 补充字符集(字符码为 0x10000 到 0x10FFFF).

Mod

不推荐: 不建议在新脚本中使用. 而是使用 Mod().

检索 Dividend(被除数) 除以 Divisor(除数) 的余数.

Transform, OutputVar, Mod, Dividend, Divisor

如果 Divisor 为零, OutputVar 被置空. DividendDivisor 都可以为小数. 如果 Divisor 为负数, 那么在计算中会被视为正数处理(即除数总是正的). 在下面的例子中, 结果是 2: Transform, OutputVar, Mod, 5, 3.

Exp

不推荐: 不建议在新脚本中使用. 而是使用 Exp().

检索 e(它的近似值为 2.71828182845905) 的 N 次幂.

Transform, OutputVar, Exp, N

N 可以为负数也可以为小数.

Sqrt

不推荐: 不建议在新脚本中使用. 而是使用 Sqrt().

检索 Number 的平方根.

Transform, OutputVar, Sqrt, Number

如果 Number 为负数, 则 OutputVar 会被置空.

Log

不推荐: 不建议在新脚本中使用. 而是使用 Log().

检索 Number 的对数(以 10 为底).

Transform, OutputVar, Log, Number

如果 Number 为负数, 则 OutputVar 会被置空.

Ln

不推荐: 不建议在新脚本中使用. 而是使用 Ln().

检索 Number 的自然对数(以 e 为底).

Transform, OutputVar, Ln, Number

如果 Number 为负数, 则 OutputVar 会被置空.

Round

不推荐: 不建议在新脚本中使用. 而是使用 Round().

检索 Number 四舍五入到第 N 个小数位.

Transform, OutputVar, Round, Number , N

如果 N 省略, 则 OutputVar 会被设置为 Number 四舍五入后最接近的整数. 如果 N 是正数, 则 Number 将四舍五入到小数点后 N 位. 如果 N 是负数, 则 Number 四舍五入到小数点左边第 N 位. 例如, -1 表示四舍五入到个位, -2 表示四舍五入到十位, 而 -3 表示取整到百位. 注: 当小数四舍五入时, Round 子命令不会移除末尾的零. 例如, 12.333 四舍五入 1 个小数位变成 12.300000. 可以在操作之前使用类似 SetFormat, Float, 0.1 的命令来改变这种行为(事实上, 使用 SetFormat 后, 可能就不再需要使用 Round 子命令了).

Ceil

不推荐: 不建议在新脚本中使用. 而是使用 Ceil().

Number 向上取整.

Transform, OutputVar, Ceil, Number

Floor

不推荐: 不建议在新脚本中使用. 而是使用 Floor().

Number 向下取整.

Transform, OutputVar, Floor, Number

Abs

不推荐: 不建议在新脚本中使用. 而是使用 Abs().

检索 Number 的绝对值.

Transform, OutputVar, Abs, Number

这是通过移除 Number 前面的负号(破折号)(如果有) 来计算的.

Sin

不推荐: 不建议在新脚本中使用. 而是使用 Sin().

检索 Number 的三角正弦.

Transform, OutputVar, Sin, Number

Number 必须用弧度表示.

Cos

不推荐: 不建议在新脚本中使用. 而是使用 Cos().

检索 Number 的三角余弦.

Transform, OutputVar, Cos, Number

Number 必须用弧度表示.

Tan

不推荐: 不建议在新脚本中使用. 而是使用 Tan().

检索 Number 的三角正切.

Transform, OutputVar, Tan, Number

Number 必须用弧度表示.

ASin

不推荐: 不建议在新脚本中使用. 而是使用 ASin().

检索反正弦(单位:弧度)(Number 是它的正弦, 译者注: sin(arcsin0.5)=0.5, arcsin(sin(pi/6))=pi/6).

Transform, OutputVar, ASin, Number

如果 Number 小于 -1 或大于 1, OutputVar 会被置空.

ACos

不推荐: 不建议在新脚本中使用. 而是使用 ACos().

检索反余弦(单位:弧度)(Number 是它的余弦).

Transform, OutputVar, ACos, Number

如果 Number 小于 -1 或大于 1, OutputVar 会被置空.

ATan

不推荐: 不建议在新脚本中使用. 而是使用 ATan().

检索反正切(单位:弧度)(它的正切是 Number).

Transform, OutputVar, ATan, Number

Pow

不推荐: 不建议在新脚本中使用. 而是使用 ** 运算符.

检索 Base(底数) 的 Exponent(指数) 次幂.

Transform, OutputVar, Pow, Base, Exponent

BaseExponent 都可以为小数. 如果 Exponent 为负数, 那么即使 BaseExponent 都是整数, OutputVar 也会被格式化为浮点数. 不支持 Base 为负数且 Exponent 为小数如 1.5; 它会使得 OutputVar 被置空.

BitNot

不推荐: 不建议在新脚本中使用. 而是使用 ~ 运算符.

检索 Number 按位取反后的结果.

Transform, OutputVar, BitNot, Number

在计算之前, 浮点值被截断为整数. 如果 Number 介于 0 和 4294967295(0xffffffff) 之间, 那么它会被视为无符号的 32 位值. 否则, 它被视为有符号的 64 位值. 后面的例子结果为 0xfffff0f0(4294963440): Transform, OutputVar, BitNot, 0xf0f.

BitAnd

不推荐: 不建议在新脚本中使用. 而是使用 & 运算符.

检索 Number1Number2 按位与运算后的结果.

Transform, OutputVar, BitAnd, Number1, Number2

在计算之前, 浮点值被截断为整数. 在下面的例子中, 结果为 0xff00(65280): Transform, OutputVar, BitAnd, 0xff0f, 0xfff0.

BitOr

不推荐: 不建议在新脚本中使用. 而是使用 | 运算符.

检索 Number1Number2 按位或的结果.

Transform, OutputVar, BitOr, Number1, Number2

在计算之前, 浮点值被截断为整数. 在下面的例子中, 结果为 0xf0f0(61680): Transform, OutputVar, BitOr, 0xf000, 0x00f0.

BitXOr

不推荐: 不建议在新脚本中使用. 而是使用 ^ 运算符.

检索 Number1Number2 按位异或的结果.

Transform, OutputVar, BitXOr, Number1, Number2

在计算之前, 浮点值被截断为整数. 在下面的例子中, 结果为 0xff00(65280): Transform, OutputVar, BitXOr, 0xf00f, 0x0f0f.

BitShiftLeft

不推荐: 不建议在新脚本中使用. 而是使用 << 运算符.

检索将数字 Number 向左移动 N 位的结果.

Transform, OutputVar, BitShiftLeft, Number, N

这相当于把数字 Number 乘以 "2 的 N 次方". 在计算之前, 浮点值被截断为整数. 在下面的例子中, 结果为 8: Transform, OutputVar, BitShiftLeft, 1, 3.

BitShiftRight

不推荐: 不建议在新脚本中使用. 而是使用 >> 运算符.

检索 Number 向右移动 N 位的结果.

Transform, OutputVar, BitShiftRight, Number, N

这相当于将数字 Number 除以 "2 的 N 次方", 截除余数. 在计算之前, 浮点值被截断为整数. 在下面的例子中, 结果为 2: Transform, OutputVar, BitShiftRight, 17, 3.

FromCodePage / ToCodePage

[AHK_L 54+]: 已移除. 使用 StrPut/StrGet.

备注

子命令接受数字参数, 也可以在它们的参数中使用表达式.

如果其中一个参数是浮点数, 那么下面的子命令将检索一个浮点数, 而不是一个整数: Mod, Pow, RoundAbs. 检索的小数位数由 SetFormat 确定.

要将弧度转换成角度, 请将它乘以 180/pi(约为 57.29578). 要将角度转换成弧度, 请将其乘以 pi/180(约为 0.01745329252).

pi 的值(约为 3.141592653589793) 为 1 的反正切值的 4 倍.

相关

Math Functions, SetFormat, Expressions, Operators, StringLower, if var is type

示例

#1: 获取字母 A 的 ASCII 编码.

Transform, OutputVar, Asc, A