如何查看表中的二进制流
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日, 最近在整理10来年游戏研发中沉淀下来的知识。很多知识都是因为爱好所以深入学习和实现。也许曾经精力旺盛毫无优先级可言。纯粹为了实现自己的一刹那的想法。现在回忆起来依然记得当初的收获的快感。那会还是端
千家信息网最后更新 2026年11月03日如何查看表中的二进制流
最近在整理10来年游戏研发中沉淀下来的知识。很多知识都是因为爱好所以深入学习和实现。也许曾经精力旺盛毫无优先级可言。纯粹为了实现自己的一刹那的想法。现在回忆起来依然记得当初的收获的快感。那会还是端游时代。编程主流语言是C++。数据库使用MSSQL。
很多玩家数据都是存放二进制流的方式。每次读写都需要C++加载到内存通过调试模式逐个看内存数据。尤其想看玩家数据是否符合正常等因为是二进制流。无法直接查看带来极大的困难。痛点激发出程序员本能的一切为了懒得需求。能否直接使用数据库存储过程查看二进制流。通过数据库函数实现。
数据库也是一种强大的语言。所以二进制的存取完全可以数据库来完成。同时完全理解各种语言在二进制流中的关联。学习这些完全体现任何之间都是有关联可以相互转换的。
查看二进制的方法
--参数一:BUF;参数二:查看类型;参数三:开始位置;;参数四:查看字符占字节数;--使用select dbo.Peims_LookBuf()--查看类型:1表示短型,2表示整形,3表示字符串CREATE FUNCTION Peims_LookBuf(@Buf VARBINARY(2560), @LookType INT, @nBegin INT, @nLen INT)RETURNS VARCHAR(2560)ASBEGIN DECLARE @BackStr VARCHAR(2560) DECLARE @nHight INT IF @LookType = 1 BEGIN SET @nHight = CAST(SUBSTRING(@Buf, @nBegin+1,1)AS INT) IF @nHight >127 --负数 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 --负数 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数据库生成二进制整形
CREATE FUNCTION Peims_ADDIntBuf(@nInt INT)RETURNS VARBINARY(256)ASBEGIN 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数据库生成二进制短型
CREATE FUNCTION Peims_ADDShortBuf(@nShort SMALLINT)RETURNS VARBINARY(256)ASBEGIN DECLARE @BackBuf VARBINARY(256) SET @BackBuf=CAST(@nShort AS BINARY(2)) SET @BackBuf=SUBSTRING(@BackBuf,2,1)+SUBSTRING(@BackBuf,1,1) RETURN(@BackBuf)END删除某位置开始某段的数据
CREATE FUNCTION Peims_DelBuf(@Buf VARBINARY(2560), @nBegin INT, @nLen INT)RETURNS VARBINARY(2560)ASBEGIN DECLARE @BackStr VARBINARY(2560) SET @BackStr=SUBSTRING(@Buf,1,@nBegin-1)+SUBSTRING(@Buf,@nBegin+@nLen,datalength(@Buf)-@nBegin-@nLen+1) RETURN(@BackStr)END修改某位置开始某段的数据
CREATE FUNCTION Peims_UpdateBuf(@Buf VARBINARY(2560), @vValue VARBINARY(256),@nBegin INT, @nLen INT)RETURNS VARBINARY(2560)ASBEGIN 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在某个位置插入内容
CREATE FUNCTION Peims_InsertBuf(@Buf VARBINARY(2560), @vValue VARBINARY(256),@nBegin INT)RETURNS VARBINARY(2560)ASBEGIN 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应用例子:类比推广。所以二进制的存取完全可以数据库来完成。学习这些完全体现任何之间都是有关联可以相互转换的。
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)
数据
二进制
数据库
位置
参数
字符
语言
关联
学习
生成
之间
内存
字符串
玩家
知识
类型
负数
C++
存取
强大
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
亿人帮互联网科技有限公司
山东特亿宝互联网科技有限公司
云之行互联网科技
科技创新与互联网经济
互联网巨头科技公司
朗涯互联网科技
唐信互联网科技 大连
互联网科技有限公司 翻译
丰台科技园 互联网公司
甘肃拓世互联网科技有限公司
恒生科技互联网指数分析
银川新华互联网科技学校地址
现代科技和互联网有关系吗
千方科技属于互联网企业吗
科技类公司包括互联网吗
广州新华互联网科技学校电竞方面
35岁以上互联网科技行业
广州互联网高科技取餐柜
国产互联网科技公司
科技美学互联网 艺术
科技与互联网
易通互联网络科技有限公司
南平创想时代互联网科技有限公司
国大互联网教育科技有限公司工作
互联网金融科技公司的优势
互联网科技数字货币
普陀区互联网教育科技管理办法
互联网科技手机排行榜
互联网大会出现的黑科技
宁波允成互联网科技有限公司