BitAndString (String function): Difference between revisions
Jump to navigation
Jump to search
m (→See also) |
m (→Examples) |
||
Line 33: | Line 33: | ||
<p class="output">'Red':bitAndString('Green', pad='FF':x)=Aaden | <p class="output">'Red':bitAndString('Green', pad='FF':x)=Aaden | ||
</p> | </p> | ||
To see why this is correct run the following: | To see why this is correct, run the following: | ||
<p class="pre">printText {~='Red':stringToHex} | <p class="pre">printText {~='Red':stringToHex} | ||
printText {~='Green':stringToHex} | printText {~='Green':stringToHex} | ||
printText {~='Red':bitAndString('Green', pad='FF':x):stringToHex} | printText {~='Red':bitAndString('Green', pad='FF':x):stringToHex} | ||
</p> | </p> | ||
This is the result: | |||
<p class="output">'Red':stringToHex=D98584 | <p class="output">'Red':stringToHex=D98584 | ||
'Green':stringToHex=C799858595 | 'Green':stringToHex=C799858595 |
Revision as of 19:05, 5 June 2012
Do bitwise And of strings (String class)
[Introduced in Sirius Mods 7.9]
BitAndString does a logical AND of the bits in two strings.
Syntax
%result = string:BitAndString( andBits, [Pad= c])
Syntax terms
%result | A string to receive the result of ANDing together the bits in string and andBits. |
---|---|
string | One of the strings to be ANDed. |
andBits | The other string to be ANDed. |
Pad | A single character that indicates the character with which the shorter of the two input strings is to be extended. As many copies of pad are used as is required to make the shorter string as long as the longer. If both strings are of equal length, no padding is required. The default value of pad is '00':x . |
Usage notes
- Using a null string for andBits is an easy way of ANDing each byte in a string with a specific byte value (the pad value).
- BitAndString is most useful for working with binary data, for example binary data being sent or received with Janus Sockets.
Examples
- The following example turns off the low order bit of a numeric value's string representation, rounding every digit down to an even number (because EBCDIC binary digits map 0-9 to hex values X'F0'-X'F9'):
%evenDigits = %digits:bitAndString('', pad='FE':x)
In, the above code, if
%digits
were'31415926'
,%evenDigits
would be set to'20404826'
. - The following example:
printText {~='Red':bitAndString('Green', pad='FF':x)}
outputs
'Red':bitAndString('Green', pad='FF':x)=Aaden
To see why this is correct, run the following:
printText {~='Red':stringToHex} printText {~='Green':stringToHex} printText {~='Red':bitAndString('Green', pad='FF':x):stringToHex}
This is the result:
'Red':stringToHex=D98584 'Green':stringToHex=C799858595 'Red':bitAndString('Green', pad='FF':x):stringToHex=C181848595