找回密码
 点一下
查看: 1112|回复: 16

我想学习字符串存档

[复制链接]
发表于 2012-6-30 21:46:01 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2012-6-30 22:15:33 | 显示全部楼层
LZ的PM: 请问使用16进位和32进位时,数值mod16或32,要如何在load时转回来......
这是LZ的主要问题吧,那么应该在顶楼说明啊~

如果数据都是在一段范围内的,比如是从1-16,那么load的时候只要乘回这个区间就行(因为商是固定且唯一的),然后再加上余数

如果数据很分散,那么需要知道商才能求被除数,也就是商要一起存入存档

不过我没接触过存档神马的,所以请等LX的专业回答~
回复

使用道具 举报

 楼主| 发表于 2012-6-30 22:28:15 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2012-6-30 23:33:48 | 显示全部楼层
fonets:所以21mod16
要加16然后商5?
感觉这样字符会很长吗? (2012-06-30 22:28)
什么叫加16然后商5。。。

如果数据是分散的,那么21mod16最后应该储存商1余数5
回复

使用道具 举报

发表于 2012-7-1 10:45:41 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2012-7-1 11:45:13 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2012-7-1 15:12:41 | 显示全部楼层

回 fonets 的帖子

fonets:看不太懂...
是只存玩家名字吗? (2012-07-01 11:45)
玩家名没必要存,如果你不想让一个玩家的心血存档被很多人无偿用的话,就要用到那个玩家名验证了
回复

使用道具 举报

发表于 2012-7-1 15:41:02 | 显示全部楼层
这类存档按自己的需求设计的好,可以举个例子:
假如要存的东西如下~ 玩家的金钱,玩家的6件物品
密码采用的符号~ 0123456789abcdefg...xyz共36个
先粗略估计下要存的这些东西占用的空间:
最多100万金币 < 36^4,所以占用4位密码
假如游戏中一共有30种物品,小于36,那么6个就是6位密码
然后是玩家名验证,大约2位就够(字符串哈希值对36*36取模)
总共12位
但这种密码很容易被聪明的玩家看出规律,所以随便加密下:
在游戏里内置几个符号的序列(把前面提到的36个符号打乱顺序保存起来,)
[1] "dt7yj4...c09u"
[2] "a4hm...12rtq"
...
然后在存取码的某个固定位置加一位,来记录所使用的是哪种序列
(进阶提示:密码当然越短越好了,这种方法还是有些浪费空间的,比如纯2进制,或者给100万金币用对数算法什么的,都可以再节约出几个字符的长度)

这种东西制作和使用都很麻烦,费力不讨好耶~~~ 而且很过时了
回复

使用道具 举报

发表于 2012-7-1 15:51:44 | 显示全部楼层
楼主来尝尝这个吧~ 酸酸甜甜嘎嘣脆 http://bbs.islga.org/read-htm-tid-60973-ds-1.html#tpc
回复

使用道具 举报

发表于 2012-7-1 17:23:32 | 显示全部楼层

回 fonets 的帖子

fonets:看不太懂...
是只存玩家名字吗? (2012-07-01 11:45)
完全不是,是将一个数字变成加密的字符串输出……
这个可以输出到屏幕让玩家记录
也可以存储到GC作为存储数据
回复

使用道具 举报

发表于 2012-7-1 17:27:18 | 显示全部楼层

回 Conflux 的帖子

Conflux:这类存档按自己的需求设计的好,可以举个例子:
假如要存的东西如下~ 玩家的金钱,玩家的6件物品
密码采用的符号~ 0123456789abcdefg...xyz共36个
先粗略估计下要存的这些东西占用的空间:
最多100万金币 < 36^4,所以占用4位密码
....... (2012-07-01 15:41)
我这个的存储密码采用2048个汉字构成……
因为有效验加密,所以随意输入很可能失败
2^30-1内整数只要3个汉字而已
回复

使用道具 举报

 楼主| 发表于 2012-7-1 18:34:32 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

 楼主| 发表于 2012-7-1 18:38:42 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2012-7-1 19:23:09 | 显示全部楼层

回 fonets 的帖子

fonets:模的算法概念是什么?
我编辑器没写... (2012-07-01 18:34)
取模嘛~~~ 也可以说是求商吧
4、24、54、104对10取模都是4
回复

使用道具 举报

发表于 2012-7-1 19:34:25 | 显示全部楼层
疯人的意思是... 简单说吧
10进制也好 2进制也好 16进制也好,几进制,这种进制就会用到几种符号
实际上进制越高,可以用越短的符号表示越大的数值
就比如 10进制的1023,在16进制里只不过是3ff,2进制里就是恐怖的11111111111了
上面提到的0123456789abcd..xyz也可以理解为是36进制,1023就可以用"re"表示
疯人的意思是大概是用他的汉字来储存,也就是恐怖的2048进制
我说,我汉字好多不认识,会不会直接丢档呀...
回复

使用道具 举报

 楼主| 发表于 2012-7-1 21:22:59 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2012-7-3 12:45:17 | 显示全部楼层

回 fonets 的帖子

fonets:实在不懂
怎么把整数丢进
2048进制给他打出字串 - (2012-07-01 21:22)
大概呢,你可以建一个字符串数组比如chr。
chr[1]="啊"
chr[2]="呵"
...
chr[2048]="卒"
什么的,然后存档要存几,就直接贴索引找。

至于怎么这个数组怎么构造,疯人那个帖子应该会有介绍
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-11-23 17:22 , Processed in 0.074015 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表