Sample code for 30+ languages & platforms
SQL Server

Append Big-Endian or Little-Endian Integers

Demonstrates how to append integers in big-endian or little-endian byte order to a BinData.

Note: This example requires Chilkat v9.5.0.77 or greater.

Chilkat SQL Server Downloads

SQL Server
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls.
--
CREATE PROCEDURE ChilkatSample
AS
BEGIN
    DECLARE @hr int
    -- Important: Do not use nvarchar(max).  See the warning about using nvarchar(max).
    DECLARE @sTmp0 nvarchar(4000)
    DECLARE @success int
    SELECT @success = 0

    DECLARE @bd int
    EXEC @hr = sp_OACreate 'Chilkat.BinData', @bd OUT
    IF @hr <> 0
    BEGIN
        PRINT 'Failed to create ActiveX component'
        RETURN
    END

    -- The hex value of decimal 123456789 is 0x075BCD15
    DECLARE @x int
    SELECT @x = 123456789

    -- Appending little-endian causes bytes to be
    -- appended in the order 0x15, 0xCD, 0x5B, 0x07
    DECLARE @littleEndian int
    SELECT @littleEndian = 1
    EXEC sp_OAMethod @bd, 'AppendInt4', @success OUT, @x, @littleEndian

    EXEC sp_OAMethod @bd, 'GetEncoded', @sTmp0 OUT, 'hex'
    PRINT @sTmp0
    -- Output is: 15CD5B07

    -- Now append the same integer in big-endian byte order.
    -- Appending bit-endian causes bytes to be
    -- appended in the order 0x07, 0x5B, 0xCD, 0x15
    SELECT @littleEndian = 0
    EXEC sp_OAMethod @bd, 'AppendInt4', @success OUT, @x, @littleEndian

    EXEC sp_OAMethod @bd, 'GetEncoded', @sTmp0 OUT, 'hex'
    PRINT @sTmp0
    -- bd now contains: 15CD5B07075BCD15

    -- -------------------------------------------
    -- Now do the same thing with 16-bit integers
    EXEC sp_OAMethod @bd, 'Clear', @success OUT

    -- 1234 decimal = 0x04D2 hex.
    SELECT @x = 1234

    SELECT @littleEndian = 1
    EXEC sp_OAMethod @bd, 'AppendInt2', @success OUT, @x, @littleEndian

    EXEC sp_OAMethod @bd, 'GetEncoded', @sTmp0 OUT, 'hex'
    PRINT @sTmp0
    -- Output is: D204

    SELECT @littleEndian = 0
    EXEC sp_OAMethod @bd, 'AppendInt2', @success OUT, @x, @littleEndian

    EXEC sp_OAMethod @bd, 'GetEncoded', @sTmp0 OUT, 'hex'
    PRINT @sTmp0
    -- Output is now: D20404D2

    EXEC @hr = sp_OADestroy @bd


END
GO