最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
如何查看表中的二進制流

? 最近在整理10來年游戲研發(fā)中沉淀下來的知識。很多知識都是因為愛好所以深入學習和實現(xiàn)。也許曾經(jīng)精力旺盛毫無優(yōu)先級可言。純粹為了實現(xiàn)自己的一剎那的想法?,F(xiàn)在回憶起來依然記得當初的收獲的快感。那會還是端游時代。編程主流語言是C++。數(shù)據(jù)庫使用MSSQL。

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設、高性價比張家口網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式張家口網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設找我們,業(yè)務覆蓋張家口地區(qū)。費用合理售后完善,十多年實體公司更值得信賴。

? 很多玩家數(shù)據(jù)都是存放二進制流的方式。每次讀寫都需要C++加載到內(nèi)存通過調(diào)試模式逐個看內(nèi)存數(shù)據(jù)。尤其想看玩家數(shù)據(jù)是否符合正常等因為是二進制流。無法直接查看帶來極大的困難。痛點激發(fā)出程序員本能的一切為了懶得需求。能否直接使用數(shù)據(jù)庫存儲過程查看二進制流。通過數(shù)據(jù)庫函數(shù)實現(xiàn)。

? 數(shù)據(jù)庫也是一種強大的語言。所以二進制的存取完全可以數(shù)據(jù)庫來完成。同時完全理解各種語言在二進制流中的關聯(lián)。學習這些完全體現(xiàn)任何之間都是有關聯(lián)可以相互轉(zhuǎn)換的。

查看二進制的方法

--參數(shù)一:BUF;參數(shù)二:查看類型;參數(shù)三:開始位置;;參數(shù)四:查看字符占字節(jié)數(shù);
--使用select dbo.Peims_LookBuf()
--查看類型:1表示短型,2表示整形,3表示字符串
CREATE FUNCTION Peims_LookBuf(@Buf VARBINARY(2560), @LookType INT, @nBegin INT, @nLen INT)
RETURNS VARCHAR(2560)
AS
BEGIN
    DECLARE  @BackStr VARCHAR(2560)
    DECLARE  @nHight  INT
    IF @LookType = 1
    BEGIN
            SET @nHight = CAST(SUBSTRING(@Buf, @nBegin+1,1)AS INT)
            IF  @nHight >127 --負數(shù)
            BEGIN
                             SET @BackStr=CAST((
                                     CAST(SUBSTRING(@Buf, @nBegin,1)AS INT)
                         +(CAST(SUBSTRING(@Buf, @nBegin+1,1)AS INT)-256)*POWER(2,8)
                                  )AS VARCHAR)
            END
            ELSE
            BEGIN
                SET @BackStr=CAST((
                                     CAST(SUBSTRING(@Buf, @nBegin,1)AS INT)
                         +CAST(SUBSTRING(@Buf, @nBegin+1,1)AS INT)*POWER(2,8)
                                  )AS VARCHAR)
            END
    END
    IF @LookType = 2
    BEGIN
            SET @nHight = CAST(SUBSTRING(@Buf, @nBegin+3,1)AS INT)
                IF  @nHight >127 --負數(shù)
            BEGIN
                             SET @BackStr=CAST((
                                     CAST(SUBSTRING(@Buf, @nBegin,1)AS INT)
                         +CAST(SUBSTRING(@Buf, @nBegin+1,1)AS INT)*POWER(2,8)
                         +CAST(SUBSTRING(@Buf, @nBegin+2,1)AS INT)*POWER(2,16)
                         +(CAST(SUBSTRING(@Buf, @nBegin+3,1)AS INT)-256)*POWER(2,24)
                                  )AS VARCHAR)
            END
            ELSE
            BEGIN
                SET @BackStr=CAST((
                                     CAST(SUBSTRING(@Buf, @nBegin,1)AS INT)
                         +CAST(SUBSTRING(@Buf, @nBegin+1,1)AS INT)*POWER(2,8)
                         +CAST(SUBSTRING(@Buf, @nBegin+2,1)AS INT)*POWER(2,16)
                         +CAST(SUBSTRING(@Buf, @nBegin+3,1)AS INT)*POWER(2,24)
                                  )AS VARCHAR)
            END
    END
    IF @LookType = 3
    BEGIN
    SET @BackStr=CAST(SUBSTRING(@Buf, @nBegin, @nLen)AS VARCHAR)
    END
    RETURN(@BackStr)
END

數(shù)據(jù)庫生成二進制整形

CREATE FUNCTION Peims_ADDIntBuf(@nInt INT)
RETURNS VARBINARY(256)
AS
BEGIN
    DECLARE  @BackBuf VARBINARY(256)
    SET @BackBuf=CAST(@nInt AS BINARY(4))
        SET @BackBuf=SUBSTRING(@BackBuf,4,1)+SUBSTRING(@BackBuf,3,1)+SUBSTRING(@BackBuf,2,1)+SUBSTRING(@BackBuf,1,1)
    RETURN(@BackBuf)
END

數(shù)據(jù)庫生成二進制短型

CREATE FUNCTION Peims_ADDShortBuf(@nShort SMALLINT)
RETURNS VARBINARY(256)
AS
BEGIN
    DECLARE  @BackBuf VARBINARY(256)
    SET @BackBuf=CAST(@nShort AS BINARY(2))
        SET @BackBuf=SUBSTRING(@BackBuf,2,1)+SUBSTRING(@BackBuf,1,1)
    RETURN(@BackBuf)
END

刪除某位置開始某段的數(shù)據(jù)

CREATE FUNCTION Peims_DelBuf(@Buf VARBINARY(2560), @nBegin INT, @nLen INT)
RETURNS VARBINARY(2560)
AS
BEGIN
    DECLARE  @BackStr VARBINARY(2560)
    SET @BackStr=SUBSTRING(@Buf,1,@nBegin-1)+SUBSTRING(@Buf,@nBegin+@nLen,datalength(@Buf)-@nBegin-@nLen+1)
    RETURN(@BackStr)
END

修改某位置開始某段的數(shù)據(jù)

CREATE FUNCTION Peims_UpdateBuf(@Buf VARBINARY(2560), @vValue VARBINARY(256),@nBegin INT, @nLen INT)
RETURNS VARBINARY(2560)
AS
BEGIN
    DECLARE  @BackStr VARBINARY(2560)
    SET @BackStr=SUBSTRING(@Buf,1,@nBegin-1)
    SET @BackStr=@BackStr+@vValue
    SET @BackStr=@BackStr+SUBSTRING(@Buf,@nBegin+@nLen,datalength(@Buf)-@nBegin-@nLen+1)
    RETURN(@BackStr)
END

在某個位置插入內(nèi)容

CREATE FUNCTION Peims_InsertBuf(@Buf VARBINARY(2560), @vValue VARBINARY(256),@nBegin INT)
RETURNS VARBINARY(2560)
AS
BEGIN
    DECLARE  @BackStr VARBINARY(2560)
    SET @BackStr=SUBSTRING(@Buf,1,@nBegin-1)
    SET @BackStr=@BackStr+@vValue
    SET @BackStr=@BackStr+SUBSTRING(@Buf,@nBegin,datalength(@Buf)-@nBegin+1)
    RETURN(@BackStr)
END

應用例子:類比推廣。所以二進制的存取完全可以數(shù)據(jù)庫來完成。學習這些完全體現(xiàn)任何之間都是有關聯(lián)可以相互轉(zhuǎn)換的。

DECLARE  @BackBuf VARBINARY(2560)
SET @BackBuf=dbo.Peims_ADDIntBuf(2147483647)
SET @BackBuf= @BackBuf+CAST('pe 中國zhongguo' AS BINARY(330))  --字符串的直接生成二進制
SET @BackBuf= @BackBuf+dbo.Peims_ADDShortBuf(-23567)
SET @BackBuf= @BackBuf+dbo.Peims_ADDIntBuf(25698456)
SELECT datalength(@BackBuf)
SELECT dbo.Peims_LookBuf(@BackBuf,2,1,4),
    dbo.Peims_LookBuf(@BackBuf,3,5,330),
    dbo.Peims_LookBuf(@BackBuf,1,335,2),
    dbo.Peims_LookBuf(@BackBuf,2,337,4)
    --刪除某塊
SEt @BackBuf=dbo.Peims_DelBuf(@BackBuf,335,2)
SELECT dbo.Peims_LookBuf(@BackBuf,2,1,4),
    dbo.Peims_LookBuf(@BackBuf,3,5,330),
    --dbo.Peims_LookBuf(@BackBuf,1,5,2),
    dbo.Peims_LookBuf(@BackBuf,2,335,4)

網(wǎng)站欄目:如何查看表中的二進制流
URL地址:http://fisionsoft.com.cn/article/jjpjjs.html