如何查看表中的二进制流

  

?最近在整理来十年游戏研发中沉淀下来的知识。很多知识都是因为爱好所以深入学习和实现。也许曾经精力旺盛毫无优先级可言。纯粹为了实现自己的一刹那的想法。现在回忆起来依然记得当初的收获的快感。那会还是端游时代。编程主流语言是c++。数据库使用该软件。

  

?很多玩家数据都是存放二进制流的方式。每次读写都需要c++加载到内存通过调试模式逐个看内存数据。尤其想看玩家数据是否符合正常等因为是二进制流。无法直接查看带来极大的困难。痛点激发出程序员本能的一切为了懒得需求。能否直接使用数据库存储过程查看二进制流。通过数据库函数实现。

  

?数据库也是一种强大的语言。所以二进制的存取完全可以数据库来完成。同时完全理解各种语言在二进制流中的关联。学习这些完全体现任何之间都是有关联可以相互转换的。

  

查看二进制的方法

  <前>   <代码类=" lang-mssql ">——参数一:BUF;参数二:查看类型;参数三:开始位置;;参数四:查看字符占字节数;   ——使用选择dbo.Peims_LookBuf ()   ——查看类型:1表示短型,2表示整形,3表示字符串   创建函数Peims_LookBuf (@Buf VARBINARY (2560), @LookType INT, INT @nBegin, @nLen INT)   返回VARCHAR (2560)   作为   开始   声明@BackStr VARCHAR (2560)   声明@nHight INT   如果@LookType=1   开始   设置@nHight=投(SUBSTRING (@Buf @nBegin + 1, - 1)作为INT)   如果@nHight祝辞127——负数   开始   设置@BackStr=投((   铸造(SUBSTRING (@Buf @nBegin 1) INT)   + (CAST (SUBSTRING (@Buf @nBegin + 1, - 1)作为INT) -256) *力量(2,8)   )作为VARCHAR)   结束   其他的   开始   设置@BackStr=投((   铸造(SUBSTRING (@Buf @nBegin 1) INT)   +演员(SUBSTRING (@Buf @nBegin + 1, - 1)作为INT) *力量(2,8)   )作为VARCHAR)   结束   结束   如果@LookType=2   开始   设置@nHight=投(SUBSTRING (@Buf @nBegin + 3 1) INT)   如果@nHight祝辞127——负数   开始   设置@BackStr=投((   铸造(SUBSTRING (@Buf @nBegin 1) INT)   +演员(SUBSTRING (@Buf @nBegin + 1, - 1)作为INT) *力量(2,8)   +演员(SUBSTRING (@Buf @nBegin + 2 1) INT) *力量(2,16)   + (CAST (SUBSTRING (@Buf @nBegin + 3 1) INT) -256) *力量(2,24)   )作为VARCHAR)   结束   其他的   开始   设置@BackStr=投((   铸造(SUBSTRING (@Buf @nBegin 1) INT)   +演员(SUBSTRING (@Buf @nBegin + 1, - 1)作为INT) *力量(2,8)   +演员(SUBSTRING (@Buf @nBegin + 2 1) INT) *力量(2,16)   +演员(SUBSTRING (@Buf @nBegin + 3 1) INT) *力量(2,24)   )作为VARCHAR)   结束   结束   如果@LookType=3   开始   设置@BackStr=投(SUBSTRING (@Buf、@nBegin @nLen)作为VARCHAR)   结束   返回(@BackStr)   结束      

数据库生成二进制整形

  <前>   <代码类=" lang-mssql ">创建函数Peims_ADDIntBuf (@nInt INT)   返回VARBINARY (256)   作为   开始   声明@BackBuf VARBINARY (256)   设置@BackBuf=投(@nInt二进制(4))   设置@BackBuf=子串(@BackBuf 4 1) + SUBSTRING (@BackBuf 3 1) +子串(@BackBuf 2 1) +子串(@BackBuf 1 1)   返回(@BackBuf)   结束      

数据库生成二进制短型

  <前>   <代码类=" lang-mssql ">创建函数Peims_ADDShortBuf (@nShort SMALLINT)   返回VARBINARY (256)   作为   开始   声明@BackBuf VARBINARY (256)   设置@BackBuf=投(@nShort二进制(2))   设置@BackBuf=子串(@BackBuf 2 1) +子串(@BackBuf 1 1)   返回(@BackBuf)   结束      

删除某位置开始某段的数据

  <前>   <代码类=" lang-mssql ">创建函数Peims_DelBuf (@Buf VARBINARY (2560), @nBegin INT, INT @nLen)   返回VARBINARY (2560)   作为   开始   声明@BackStr VARBINARY (2560)   设置@BackStr=子串(@Buf 1 @nBegin-1) +子串(@Buf, @nBegin + @nLen datalength (@Buf) -@nBegin -@nLen + 1)   返回(@BackStr)   结束      

修改某位置开始某段的数据

  <前>   <代码类=" lang-mssql ">创建函数Peims_UpdateBuf (@Buf VARBINARY (2560), @vValue VARBINARY (256), @nBegin INT, INT @nLen)   返回VARBINARY (2560)   作为   开始   声明@BackStr VARBINARY (2560)   设置@BackStr=子串(@Buf 1 @nBegin-1)   设置@BackStr=@BackStr + @vValue   设置@BackStr=@BackStr +子串(@Buf @nBegin + @nLen datalength (@Buf) -@nBegin -@nLen + 1)   返回(@BackStr)   结束   

如何查看表中的二进制流