BitAndString (String function): Difference between revisions
Jump to navigation
Jump to search
mNo edit summary |
m (→Usage notes) |
||
Line 21: | Line 21: | ||
==Usage notes== | ==Usage notes== | ||
<ul> | <ul> | ||
<li>Using a null <var class="term">string</var> for <var class="term">andBits</var> is an easy way of ANDing each byte in a string with a specific byte value (the <var | <li>Using a null <var class="term">string</var> for <var class="term">andBits</var> is an easy way of ANDing each byte in a string with a specific byte value (the <var>Pad</var> value). | ||
<li><var>BitAndString</var> is most useful for working with binary data, for example binary data being sent or received with <var class="product">[[Janus Sockets]]</var>. | <li><var>BitAndString</var> is most useful for working with binary data, for example binary data being sent or received with <var class="product">[[Janus Sockets]]</var>. |
Revision as of 18:44, 2 November 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 | This name required parameter is a single character that indicates the character with which the shorter of the two input strings is to be extended. As many copies of c 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 c 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