\S1{intinst} Integer Support \S2{intfmt} IntFmt \c user_var(output) format numberstring Formats the number in "numberstring" using the format "format", and sets the output to user variable $x. Example format strings include "%08X" "%u" \c IntFmt $0 "0x%08X" 195948557 \c IntFmt $0 "%c" 0x41 \S2{int64fmt} Int64Fmt \c user_var(output) format numberstring \NsisFuncReq64 \c Int64Fmt $0 "%I64x" 244837743786702 \# InternalNote: There is no IntPtrFmt instruction because "%p" is 2000+ and "%Ix" is XP+. Consequently, all code needs to check ${NSIS_PTR_SIZE}. \S2{intop} IntOp \c user_var(output) value1 OP [value2] Combines value1 and (depending on OP) value2 into the specified user variable (\c{user_var}). OP is defined as one of the following: \b \e{+} ADDs value1 and value2 \b \e{-} SUBTRACTs value2 from value1 \b \e{*} MULTIPLIEs value1 and value2 \b \e{/} DIVIDEs value1 by value2 \b \e{%} MODULUSs value1 by value2 \b \e{|} BINARY ORs value1 and value2 \b \e{&} BINARY ANDs value1 and value2 \b \e{^} BINARY XORs value1 and value2 \b \e{<<} LEFT SHIFTs value1 by value2 \b \e{>>} ARITHMETIC RIGHT SHIFTs value1 by value2 \b \e{>>>} LOGICALLY RIGHT SHIFTs value1 by value2 \b \e{~} BITWISE NEGATEs value1 (i.e. 7 becomes 4294967288) \b \e{!} LOGICALLY NEGATEs value1 (i.e. 7 becomes 0) \b \e{||} LOGICALLY ORs value1 and value2 \b \e{&&} LOGICALLY ANDs value1 and value2 \c IntOp $0 1 + 1 \c IntOp $0 $0 + 1 \c IntOp $0 $0 << 2 \c IntOp $0 $0 ~ \c IntOp $0 $0 & 0xF \S2{intptrop} IntPtrOp \c user_var(output) value1 OP [value2] Combines value1 and (depending on OP) value2 into the specified user variable (\c{user_var}). OP is the same list of operators as supported by \c{IntOp}. \c IntPtrOp $FieldAddress $MyBuffer + $FieldOffset