UTF-16 surrogate pairs are encoding Unicode character values higher than 0xffff, e.g. 😀 (U+1F600).
Unicode values above 0xffff are encoded as 2 UTF-16 characters called a surrogate pair where 0x10000 is subtracted from the Unicode value an the upper 10 bits are added to 0xDC00 and stored first followed by an UTF-16 character where the lower 10 bits of the value are added to 0xD800.
UTF-16 surrogate pairs are encoding Unicode character values higher than 0xffff, e.g. 😀 (U+1F600).
Unicode values above 0xffff are encoded as 2 UTF-16 characters called a surrogate pair where 0x10000 is subtracted from the Unicode value an the upper 10 bits are added to 0xDC00 and stored first followed by an UTF-16 character where the lower 10 bits of the value are added to 0xD800.