普通视图

发现新文章,点击刷新页面。
今天 — 2024年10月16日首页

迭代幂运算/重幂的介绍与其Python代码实现


数学中的迭代幂运算/重幂是什么?

迭代幂运算(重幂)是数学中的一种运算,涉及到反复进行幂次运算。它是超运算序列的一部分,该序列延伸了加法、乘法和幂运算。在迭代幂运算中,一个数自乘多次,直到达到指定的次数。

一个数a迭代幂的高度n通常表示为:tex_7f275feba9caa33491cc739d97613e41 迭代幂运算/重幂的介绍与其Python代码实现 Python 学习笔记 数学 数学 程序设计 计算机 ,也就是把n写在a的左上角,(也可以记作:a↑↑n)这表示a被迭代n次。

例如:

  • tex_809d19495ee2ad967edb956694773d96 迭代幂运算/重幂的介绍与其Python代码实现 Python 学习笔记 数学 数学 程序设计 计算机 (简单恒等式)
  • tex_b2971689df7256a7c315e159e8dceca6 迭代幂运算/重幂的介绍与其Python代码实现 Python 学习笔记 数学 数学 程序设计 计算机 (a自乘一次)
  • tex_185fcc3b7fe6daf47068d87ffd22f670 迭代幂运算/重幂的介绍与其Python代码实现 Python 学习笔记 数学 数学 程序设计 计算机 (a的幂次为a自乘)
  • tex_a932b7bb96225dc665bbe571f816002a 迭代幂运算/重幂的介绍与其Python代码实现 Python 学习笔记 数学 数学 程序设计 计算机 ,依此类推。

在迭代幂运算的上下文中,tex_b3ef97b6eba2428ee919c02c89d2c9ea 迭代幂运算/重幂的介绍与其Python代码实现 Python 学习笔记 数学 数学 程序设计 计算机 通常未定义或没有普遍共识。然而,一些数学惯例建议对于任何 tex_58c6653dfed174ea991f702adfb3e6f4 迭代幂运算/重幂的介绍与其Python代码实现 Python 学习笔记 数学 数学 程序设计 计算机 tex_2f1f5ed0eeff6d95cf9b145624dfb6af 迭代幂运算/重幂的介绍与其Python代码实现 Python 学习笔记 数学 数学 程序设计 计算机 ,类似于在幂运算中对任何非零的 tex_58c6653dfed174ea991f702adfb3e6f4 迭代幂运算/重幂的介绍与其Python代码实现 Python 学习笔记 数学 数学 程序设计 计算机 tex_5c135adeedf02dca7953a9719fb38fa2 迭代幂运算/重幂的介绍与其Python代码实现 Python 学习笔记 数学 数学 程序设计 计算机 的情况。

迭代幂运算示例

让我们评估 tex_a5f6729c6edbc3df5dae3c81efe128b2 迭代幂运算/重幂的介绍与其Python代码实现 Python 学习笔记 数学 数学 程序设计 计算机 (读作“2迭代到高度3”):

tex_c3974a6b51c4029486462ba28d7f5c17 迭代幂运算/重幂的介绍与其Python代码实现 Python 学习笔记 数学 数学 程序设计 计算机
tex_38f3272f3cc8a02e84ceed576663756c 迭代幂运算/重幂的介绍与其Python代码实现 Python 学习笔记 数学 数学 程序设计 计算机
因此 tex_a79a23ebbcc28f19e40a7b5604f3e748 迭代幂运算/重幂的介绍与其Python代码实现 Python 学习笔记 数学 数学 程序设计 计算机

迭代幂/重幂运算的通用性质

  • 非交换性:迭代幂运算不是交换的,这意味着 tex_2bb7d37b96ba358da2a2c8024d02fe57 迭代幂运算/重幂的介绍与其Python代码实现 Python 学习笔记 数学 数学 程序设计 计算机
  • 增长速度非常快:迭代幂运算增长非常快。即使是小数也会因为幂运算的快速增长而导致非常大的结果。

迭代幂运算/重幂在基础数学中较少见,但在某些高级数学领域中发挥作用,特别是在涉及极大数的领域,如大数理论和计算机科学中。

用 Python 计算迭代幂运算

以下是两个计算迭代幂运算的Python函数。第一个使用递归,第二个使用迭代。

在两个函数中,我们在开始时添加了对 n = 0 的检查。如果 n 为 0,则函数返回 1,否则继续处理。这种方式使函数能够按照任意数的迭代幂高为0时为1的惯例处理 n=0 的情况。

递归函数计算迭代幂

递归函数:此函数将自己调用,n 的高度递减1,直到达到1,此时返回基数a。这就实现了从上到下构建指数链的效果。

@lru.cache(None)  ## 缓存函数
def tetration_recursive(a, n):
    if n == 0:
        return 1
    if n == 1:
        return a
    return a ** tetration_recursive(a, n - 1)

递归计算迭代幂的函数理论上可以进行尾优化。在尾递归中,递归调用是函数中的最后一个操作,这样某些编译器或解释器可以通过重用相同的堆栈帧来优化调用堆栈的使用。这可以通过消除每个递归调用的额外堆栈帧需求来将空间复杂度降到 O(1)。

然而,当前的递归实现并不是尾递归的,因为递归调用嵌套在一个幂运算中:

return a ** tetration_recursive(a, n - 1)

这里,幂运算依赖于递归调用的结果,所以在完成当前调用之前必须计算出结果,从而阻止了尾递归优化。

迭代函数计算迭代幂

迭代函数:此函数使用 for 循环遍历高度 n,通过在每次迭代中更新幂运算的结果,来从下至上计算结果。

def tetration_iterative(a, n):
    if n == 0:
        return 1
    result = a
    for _ in range(1, n):
        result = a ** result
    return result

迭代幂算法的时间/空间复杂度

Python函数计算迭代幂的时间和空间复杂度取决于其递归或迭代实现。让我们分析两种实现。

递归函数的复杂度

时间复杂度:

  • 每次递归调用都会与之前的调用结果进行一次幂运算。
  • 总共有n-1次递归调用,所以该函数被调用了O(n)次。
  • 然而,像 tex_ad68cb15ab4e6c9d3aa23d421625d67a 迭代幂运算/重幂的介绍与其Python代码实现 Python 学习笔记 数学 数学 程序设计 计算机 的幂运算需要 tex_e6c0128be5c7d7501ff5a45664d688da 迭代幂运算/重幂的介绍与其Python代码实现 Python 学习笔记 数学 数学 程序设计 计算机 的时间。
  • 因此,对于较大的 n 值,由于幂次的增长,其时间复杂度会呈指数增长。
  • 这导致总的时间复杂度大约为 tex_61a94ff4b35f50421447e762bcc2b21e 迭代幂运算/重幂的介绍与其Python代码实现 Python 学习笔记 数学 数学 程序设计 计算机 ,有n层,这意味着增长速度非常快

空间复杂度:

  • 由于这是一个递归函数,每次调用都需要堆栈空间。
  • 递归的最大深度为 n,所以空间复杂度为 O(n)。
迭代函数的复杂度

时间复杂度:

  • 与递归版本一样,该函数迭代 n – 1 次
  • 每次迭代涉及计算 tex_58c6653dfed174ea991f702adfb3e6f4 迭代幂运算/重幂的介绍与其Python代码实现 Python 学习笔记 数学 数学 程序设计 计算机 的幂次,这个结果会呈指数增长。
  • 因此,时间复杂度也成为 tex_61a94ff4b35f50421447e762bcc2b21e 迭代幂运算/重幂的介绍与其Python代码实现 Python 学习笔记 数学 数学 程序设计 计算机 ,有n层,因为每一步都是指数级增长。

空间复杂度:

  • 此迭代版本仅需要少量额外空间用于 result 变量等,因此它的额外空间复杂度为 O(1)。
  • 然而,结果本身可能会变得非常大,如果 a 和 n 很大,可能需要大量内存来存储。

由于反复幂次的快速增长,这两种实现的时间复杂度都非常高,对于较大的值变得不可行。递归版本由于调用堆栈的使用空间复杂度为 O(n),而迭代版本的辅助空间复杂度为 O(1),但仍然需要处理极大数,这可能会间接影响内存使用。

英文:Tetration Operator in Math Simply Explained with Python Algorithms

本文一共 1253 个汉字, 你数一下对不对.
迭代幂运算/重幂的介绍与其Python代码实现. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c 迭代幂运算/重幂的介绍与其Python代码实现 Python 学习笔记 数学 数学 程序设计 计算机
The post 迭代幂运算/重幂的介绍与其Python代码实现 first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  2. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  3. 英国房子的EPC节能报告(Energe/Efficiency Performance Certificate) EPC (Energe/Efficiency Performance Certificate) 是英国房子的节能报告, 法律上规定, 每个房子都必须要有一个EPC报告, 报告的有效期为十年. 房东在把房子出租或者想卖房的时候, 这个EPC就必须有效, 在一些情况下 比如出租房子的时候, 这个EPC报告还必须符合一些最低标准, 比如房子必须满足 F档(类似及格线)...
  4. 给孩子零花钱培养孩子正确的金钱观价值观 两个娃已经不知不觉7岁8岁了. 媳妇和我商量一下决定给孩子每人每周5英镑的零花钱(Pocket Money). 这样他们慢慢的就有自己的小积蓄备将来不时之需: 比如朋友聚会生日啥的需要准备礼物. 同时, 我们决定不再给孩子买零食(薯片啥的). 孩子一天好几餐, 晚上睡觉前还得吃零食, 我们就多买了很多水果面包, 健康的食物多吃一些总不是啥坏事. 孩子可以用这些零钱买自己想要的东西, 我们也不再过问. 孩子有自己的决定权. 第一周的时候,...
  5. 拔牙后的注意事项(图, 慎入) Care of Mouth after Extraction 昨天又拔了两颗牙, 初步定在5月4号装牙套. 这是牙医诊所给的术后注意事项: 拔完后需要等3-4小时麻醉失效后才能吃喝. 稍微流点血是很正常的. 但是请不要漱口吐出, 因为这会加速流血. 你只要轻轻的含着口水并咽下即可. 如果一直流血, 请拿着纱布(并不是纸巾)放在拔牙处20分钟. 24小时内请不要运动, 术后几小时内回家静静坐着. 12小时内不要吸烟, 喝酒或者喝热饮, 因为这会让伤口流血....
  6. 同一台服务器上多个WORDPRESS站点的一些设置可以移出去 我自从把所有网站都挪到一处VPS服务器上 就发现很多事情省事很多 可以同时管理多个网站 包括 WORDPRESS博客. 比如我有四个WORDPRESS博客 然后我就把通用的一些资料给移出去 移到 HTTP或者HTTPS都不能直接访问的文件夹里这样就更安全许多. 文件 wp-conn.php 存储了 相同的数据库资料. 1 2...
  7. ChatGPT-4 使用 Math Wolfram 插件解决数学脑筋急转弯问题 这篇文章, 我们看一个简单的数学问题(脑筋急转弯), 并用 Python 解决它. 我们看一下LLM(大型语言模型): ChatGPT3.5和ChatGPT4. 通过 ChatGPT-Plus 订阅(目前每月 20 美元 + VAT增值税), 我们可以启用...
  8. HPZ800服务器主板太老不支持超过2TB的大硬盘 我家里一直用的是HPZ800服务器, 很吵, 很老, 虽然这台服务器已经有十年之久(我在EBAY上买来用了五年多了), 但是即使放到今天, 这服务器速度依旧很快, 很稳定. 由于服务器用的是ECC较验内存, 所以基本上不重启关机. HPZ800主机有两个硬核CPU – 因特志强 X5650 – 每个CPU是12核....
昨天以前首页

WordPress & Typecho 极简主题 Dear v1.1.0

作者 Jeff
2024年9月22日 21:11

周末对 Dear 主题 WordPress & Typecho 版本都进行了小更新。主要增加独立的“搜索模板”,并对行距、次要字体等地方进行了小优化。

Dear 主题首页设置页面 id 后,会引用该页面的所有内容和样式,同学们可以对该页面尽情发挥想象力,以满足个性化需求。比如展示订阅地址、社交网站地址等等,也可以贴个封面图作为首页 Banner 等。如下图 Follow Me:WordPress & Typecho 极简主题 Dear v1.1.0-雅余

本次版本主要更新内容:

- 增加独立“搜索模板”
- CSS 样式移至 style.css 文件
- 首页默认显示8篇文章
- 部分样式优化

新版本请从主题发布页面获取 Github 链接:

WordPress 版本Typecho 版本

WordPress 版本 Text Only 和 Writing 主题错误修复

作者 Jeff
2024年9月7日 10:53

昨晚更新 Paper 主题的时候发现了一处拷贝错误,把旧主题的代码直接粘贴了,部分 PHP 版本没有提示错误,所以没发现。现已对 WordPress 版本 Text Only 和 Writing两个主题发新版本修复,可针对性更新。主要是 archives.php 和 search.php 两个模板文件。

详细可查看主题发布页:Text Only (WordPress)Writing (WordPress)

WordPress & Typecho 极简主题 Paper v1.1.0

作者 Jeff
2024年9月7日 00:32

Paper 这款纯文本的极简主题得到不少同学的喜爱,应部分同学的要求对主题进行了更新。主要增加独立的“搜索模板”,并对多处负空间进行调整,增加文字呼吸的空间。还修正了”文章归档“模板的一处错误,可针对性更新。

主要更新内容:

- 增加独立“搜索模板”
- 菜单及部分代码调整
- CSS 样式移至 style.css 文件
- 优化多处负空间距离
- 优化评论框样式
- 修复文章归档模板错误

新版本请从主题发布页面获取 Github 链接:

WordPress 版本Typecho 版本

Typecho 纯文本极简主题 Text Only v1.0.0 发布

作者 Jeff
2024年7月26日 23:58

应朋友们要求,制作了 Typecho 版本的 Text Only 主题,和 WordPress 版本样式上基本保持一致。使用愉快~

主题介绍如下:

Text Only 为纯文本极简主题,黑白配色,对程序极简优化,主题无 JS 和图片文件载入。

主题支持自定义背景、自定义菜单,保留搜索及评论功能;内置文章归档和搜索模板;已作中文字体优化,内置3种字体方案可选。

主题类型:极简 / 博客 / 纯文本 / 单栏 / 自适应 / 免费

提供 WordPress 版本Typecho 版本

主题免费开源,供学习交流,不提供售后支持。如有建议,欢迎评论留言,不喜勿喷。

主题可按授权方式继续随意改造,但望保留我的信息。感谢!

Typecho 纯文本极简主题 Text Only v1.0.0 发布-雅余

Typecho 纯文本极简主题 Text Only v1.0.0 发布-雅余

Typecho 纯文本极简主题 Text Only v1.0.0 发布-雅余

Typecho 纯文本极简主题 Text Only v1.0.0 发布-雅余

Typecho 纯文本极简主题 Text Only v1.0.0 发布-雅余

详细介绍和使用见主题两个版本的发布页面。

WordPress 纯文本极简主题:Text Only
Typecho 纯文本极简主题:Text Only

欢迎提供建议,以便继续完善。

WordPress & Typecho 极简主题 Writing v1.1.0

作者 Jeff
2024年7月21日 15:10

上个月收到 Github 上面一条 Issue,借周末时间对主题小改动了一下。毕竟不是全职运维,拖拖拉拉一个月才改。

主要更新内容:

- 增加独立“搜索模板”
- CSS 样式移至 style.css 文件
- 部分样式完善

新版本请从主题发布页面获取 Github 链接:

WordPress 版本Typecho 版本

-

小插曲:太不专业了,commit 的时候手一抖,把另外一个主题的文件给替换了,哈哈。

WordPress 纯文本极简主题 Text Only v1.0.0 发布

作者 Jeff
2024年7月8日 23:18

手痒,又发一款极简主题。这是一款初始化主题,仅提供最基础的页面展示,简洁的样式,简洁的代码,方便后期加工。提供两个页面模板,归档模板和独立搜索页面。较以前主题,对评论区进行了适当的美化。

主题介绍如下:

Text Only 为纯文本极简主题,黑白配色,对程序极简优化,主题无 JS 和图片文件载入。

主题支持自定义背景、自定义菜单,保留搜索及评论功能;内置文章归档和搜索模板;已作中文字体优化,内置3种字体方案可选。力求极简,对程序自带功能进行禁用,若对使用有影响,按需删除即可。

主题类型:极简 / 博客 / 纯文本 / 单栏 / 自适应 / 免费

目前仅提供 WordPress 版本。

主题免费开源,供学习交流,不提供售后支持。既然供学习交流,故也欢迎和我交流。如有建议,欢迎评论留言,不喜勿喷。

主题可按授权方式继续随意改造,但望保留我的信息。感谢!

WordPress 纯文本极简主题 Text Only v1.0.0 发布-雅余

WordPress 纯文本极简主题 Text Only v1.0.0 发布-雅余

WordPress 纯文本极简主题 Text Only v1.0.0 发布-雅余

WordPress 纯文本极简主题 Text Only v1.0.0 发布-雅余

WordPress 纯文本极简主题 Text Only v1.0.0 发布-雅余

详细介绍和使用见主题的发布页面。

WordPress 纯文本极简主题:Text Only

欢迎提供建议,以便继续完善。

Firefox Addon 踩坑指南

作者 7gugu
2024年6月26日 13:52

最近为了提高工作效率,给Firefox开发了一个切换whistle代理的插件(Addon),但是Firefox在manifestV3上有很多规范都与Chrome不相同,且中文互联网关于这方面的知识很少,所以在此总结了一些我遇到的坑点,希望可以帮助大家。

开发模板

Firefox虽然没有太多关于V3的教程,但是插件开发还不至于从0开始搭建框架,此处推荐一个React+TS的开发模板,通过这个开发模板,可以“快速”打包出Chrome和Firefox平台的插件。

https://github.com/aeksco/react-typescript-web-extension-starter

该附加组件无法安装,因为它有可能已损坏

Firefox官方虽然说可以Self-distribute,但是文档的描述有问题,没有给出正确打包XPI的方式。直接将产物压缩成zip后,将拓展名改成xpi,Firefox依旧是不能正确识别的。

正确的方法应该是,将产物压缩成zip后,提交到AMO签名,签名后Firefox浏览器就能安装了。

操作流程:

1.提交本地产物到AMO上,选择自托管(https://addons.mozilla.org/zh-CN/developers/addon/submit/distribution)

2.审核签名完成后将XPI下载至本地即可

background.service_worker is currently disabled

这是因为在manifestV3中,Firefox与Chrome针对后台程序的处理有差异导致的。其实Firefox也是能使用后台程序的,但是不能直接写成service_worker。直接用service_worker,Firefox将会报错。

正确的写法应该是使用”scripts”代替”service_worker”,Firefox的后台程序变成了background_script。

The extension ID is required in Manifest Version 3 and above

上传产物压缩包到AMO的时候,可能会遇到这个问题,这个是因为Firefox在mainfestV3及以上版本中要求增加一个插件ID号和最低版本限制导致的,需要在manifest.json中增加该字段才可以。

最低版本号可以参考你所用的浏览器API限制来决定,id一般使用<插件名>+@+<个人域名>就可以了(只要保证ID唯一即可)。

参考插件

之前在Blog中分享过一次这个调试插件,可以以这个插件为基准来检查自己的插件是否符合上架要求。

wordpress 获得当前文章真实序号的方法

作者 大致
2024年3月7日 21:43

想在主题里利用一下这个小功能。
那些抄来抄去的都包了浆的所谓办法都是在后续的ID上作文章,根本没有切中问题的本质。因为在wordpress的设计思想中,万物皆post,根本没把ID的增长当回事。想通过限制自动保持、自动版本、限制媒体什么的解决方案是缘木求鱼,根本不治本。
其实“取连续的文章序号”换个思路,就是取“截止当前发表时间,它的前面还有多少篇”这么一个简单问题。刚好wordpress的核心类WP_Query支持根据时间检索,而时间检索的参数里刚好有个’before’。一拍即合。
下面就是代码。注意:此代码要在loop内部使用。

get_real_post_id() {
    if ( !is_single() ){
        return;
    }
    global $post;
    if ( 'publish' !== $post->post_status
		&& 'private' !== $post->post_status) {
        return;
    }
    $args = array(
        'post_type' => 'post',
        'post_status' => array('publish', 'private'),
        'post_per_page' => -1,
        'fields' => 'ids',
        'date_query' => array(
            'before' => $post->post_date,
        ),
    );
    $the_query = new WP_Query($args);
    return $the_query->post_count;
}

简单解释一下:
因为要用到post的ID、post_status和post_date,所以直接用了loop循环中存在的全局变量$post。不用这个全局变量,改用get系列的函数也是一样的。
检索的post类型,我用的是publish和private。这个参是个数组,可以根据需要自行增减。
fields设成ids,意思是返回值接受id。这么写是因为有人说这样可以加快执行速度,并没有实际证据。

date_query是重头戏。
before可以接受的是date string。而无论你的时间格式设成什么样,$post->post_date都刚好是个标准的时间字符串,而且还精确到秒,所以直接放进去即可。
这里其实省略了一个默认参“column”=“post_date”,也就是给before参赋的值。可以选择的还有“post_date_gmt”,“post_modified”,“post_modified_gmt”。都是字面意思,有需要自己替换就行。
还有就是,before默认生成的运算符是小于等于,也就是取得的数包括了当前贴自身。如果要取得除自己以外的数量,自行减1,或者增加参数post__not_in均可达到目的。

对了还有,get_posts跟WP_Query本质上是一个东西,同样的参数,用get_posts调用,也能起到同样的效果。但是实际执行时,get_posts为了得到返回值,需要多执行一次qurey。而使用WP_Query的时候,直接取成员post_count即可,并不需要把post真的检索出来,相对来说效率更高。

此方案的优点是动态获取,删帖或者转换帖子类型,甚至无耻地修改发帖时间,都不会影响序号的连续性。
缺点就是进行了一次数据库操作,会耽误一丢丢时间。不过据说WP_Query默认操作的是缓存,影响应该没那么大。
以上。


  • (1):地球球花演邦女郎的时候已经是五旬老太了,不在讨论之列
  • (2):本作日版发售后3天,任天堂的下一代掌机NDS在北美上市
  • (3):本作两个流行的汉化版都有大问题。一个D商汉化版不能正常存档,另一个汉化版切换到饺子开始的中间几个人物后会死机。
  • (4):五人分工:辽冀鲁,津京,江浙沪,闽粤桂,深圳+长江(武汉)
  • (5):本来还有个汤球球,但他把机器和卡一起卖给了我。

【翻译】让cheat engine(CE)支持大字节序搜索

作者 大致
2023年11月20日 21:51

Cheat Engine是当下我所知的唯一好用的Windows下的内存修改器。这个工具有个巨大的缺陷——搜索的数据只能以小端(small endian)排列。搜索双字节或四字节数据时,并不像国人开发的上个时代的FPE或者金山游侠那样,自动转换字节序,只能先用计算器把数据拆成字节,然后用字符串数组才能搜索到结果,非常不便。
今天偶然被我找到了支持多字节大端字节序的方法,特此分享。

来自作者的github

照例,我没用过汉化版的CE,故直接用英文菜单描述,如有不便请忍耐。

1.打开Cheat Engine
2.打开任意进程
3.在【Value Type】下拉列表框上单击鼠标右键
4.点击【Define new custom type (Auto Assembler)】
20231120_cheat_engine_1
5.用下面的代码覆盖弹出对话框里的代码
6.点击OK
7.重复步骤3-6,把三份代码都添加进去。分别是float的大字节序(Float Big Endian),四字节的大字节序(4 Bytes Big Endian)和双字节的大字节序(2 Bytes Big Endian)。
8.重启CE(否则新添加的工具不好用)

代码1:Float Big Endian

alloc(TypeName,256)
alloc(ByteSize,4)
alloc(ConvertRoutine,1024)
alloc(ConvertBackRoutine,1024)
alloc(UsesFloat,1)
 
 
TypeName:
db 'Float Big Endian',0
 
 
ByteSize:
dd 4

UsesFloat:
db 1
 
 
ConvertRoutine:
[64-bit]
xor eax,eax
mov eax,[rcx] //eax now contains the bytes 'input' pointed to
bswap eax //convert to big endian
ret
[/64-bit]

[32-bit]
push ebp
mov ebp,esp
mov eax,[ebp+8] //place the address that contains the bytes into eax
mov eax,[eax] //place the bytes into eax so it's handled as a normal 4 byte value
bswap eax
pop ebp
ret 4
[/32-bit]
 
 
ConvertBackRoutine:
[64-bit]
bswap ecx //convert the little endian input into a big endian input
mov [rdx],ecx //place the integer the 4 bytes pointed to by rdx
ret
[/64-bit]

[32-bit]
push ebp
mov ebp,esp
push eax
push ebx
mov eax,[ebp+8] //load the value into eax
mov ebx,[ebp+c] //load the address into ebx
bswap eax
 
mov [ebx],eax //write the value into the address
pop ebx
pop eax
pop ebp
ret 8
[/32-bit]

代码2:4 Bytes Big Endian

alloc(TypeName,256)
alloc(ByteSize,4)
alloc(ConvertRoutine,1024)
alloc(ConvertBackRoutine,1024)

TypeName:
db '4 Bytes Big Endian',0

ByteSize:
dd 4

//The convert routine should hold a routine that converts the data to an integer (in eax)
//function declared as: stdcall int ConvertRoutine(unsigned char *input);
//Note: Keep in mind that this routine can be called by multiple threads at the same time.
ConvertRoutine:
//jmp dllname.functionname
[64-bit]
//or manual:
//parameters: (64-bit)
//rcx=address of input
xor eax,eax
mov eax,[rcx] //eax now contains the bytes 'input' pointed to
bswap eax //convert to big endian

ret
[/64-bit]

[32-bit]
//jmp dllname.functionname
//or manual:
//parameters: (32-bit)
push ebp
mov ebp,esp
//[ebp+8]=input
//example:
mov eax,[ebp+8] //place the address that contains the bytes into eax
mov eax,[eax] //place the bytes into eax so it's handled as a normal 4 byte value

bswap eax

pop ebp
ret 4
[/32-bit]

//The convert back routine should hold a routine that converts the given integer back to a row of bytes (e.g when the user wats to write a new value)
//function declared as: stdcall void ConvertBackRoutine(int i, unsigned char *output);
ConvertBackRoutine:
//jmp dllname.functionname
//or manual:
[64-bit]
//parameters: (64-bit)
//ecx=input
//rdx=address of output
//example:
bswap ecx //convert the little endian input into a big endian input
mov [rdx],ecx //place the integer the 4 bytes pointed to by rdx

ret
[/64-bit]

[32-bit]
//parameters: (32-bit)
push ebp
mov ebp,esp
//[ebp+8]=input
//[ebp+c]=address of output
//example:
push eax
push ebx
mov eax,[ebp+8] //load the value into eax
mov ebx,[ebp+c] //load the address into ebx

//convert the value to big endian
bswap eax

mov [ebx],eax //write the value into the address
pop ebx
pop eax

pop ebp
ret 8
[/32-bit]

代码3:2 Bytes Big Endian

alloc(TypeName,256)
alloc(ByteSize,4)
alloc(ConvertRoutine,1024)
alloc(ConvertBackRoutine,1024)

TypeName:
db '2 Bytes Big Endian',0

ByteSize:
dd 2

//The convert routine should hold a routine that converts the data to an integer (in eax)
//function declared as: stdcall int ConvertRoutine(unsigned char *input);
//Note: Keep in mind that this routine can be called by multiple threads at the same time.
ConvertRoutine:
//jmp dllname.functionname
[64-bit]
//or manual:
//parameters: (64-bit)
//rcx=address of input
xor eax,eax
mov ax,[rcx] //eax now contains the bytes 'input' pointed to
xchg ah,al //convert to big endian

ret
[/64-bit]

[32-bit]
//jmp dllname.functionname
//or manual:
//parameters: (32-bit)
push ebp
mov ebp,esp
//[ebp+8]=input
//example:
mov eax,[ebp+8] //place the address that contains the bytes into eax
mov ax,[eax] //place the bytes into eax so it's handled as a normal 4 byte value
and eax,ffff //cleanup
xchg ah,al //convert to big endian

pop ebp
ret 4
[/32-bit]

//The convert back routine should hold a routine that converts the given integer back to a row of bytes (e.g when the user wats to write a new value)
//function declared as: stdcall void ConvertBackRoutine(int i, unsigned char *output);
ConvertBackRoutine:
//jmp dllname.functionname
//or manual:
[64-bit]
//parameters: (64-bit)
//ecx=input
//rdx=address of output
//example:
xchg ch,cl //convert the little endian input into a big endian input
mov [rdx],cx //place the integer the 4 bytes pointed to by rdx

ret
[/64-bit]

[32-bit]
//parameters: (32-bit)
push ebp
mov ebp,esp
//[ebp+8]=input
//[ebp+c]=address of output
//example:
push eax
push ebx
mov eax,[ebp+8] //load the value into eax
mov ebx,[ebp+c] //load the address into ebx

//convert the value to big endian
xchg ah,al

mov [ebx],ax //write the value into the address
pop ebx
pop eax

pop ebp
ret 8
[/32-bit]

搞定!试试效果:
20231120_cheat_engine_2


  • (1):真正的谜底是“贵妃红”,有人听说过这种花么?
  • (2):另一版到张铁林出场就退了
  • (3):臭宝给这只小公猫起名“娜娜”。

WordPress & Typecho 极简主题 Writing v1.0 发布

作者 Jeff
2023年12月17日 20:37

这应该是2023年最后一款主题了。

Writing 是一款极致极简写作主题,简约且克制,降低阅读干扰。

主题支持自定义背景、自定义菜单、暗黑模式、自适应,保留搜索及评论功能,内置文章归档模板。力求极简,对程序自带功能进行禁用及优化。主题无 JS、CSS 文件载入,对程序极简优化,仅9个文件约50kb。

主题类型:极简 / 单栏 / 博客 / 自适应 / 暗黑模式 / 免费

在 WordPress 和 Typecho 两个程序上均可免费享用。

主题免费开源,供学习交流,不提供售后支持。既然供学习交流,故也欢迎和我交流。如有建议,欢迎评论留言,不喜勿喷。

主题可按授权方式继续随意改造,但望保留我的信息。感谢!

WordPress & Typecho 极简主题 Writing v1.0 发布-雅余

WordPress & Typecho 极简主题 Writing v1.0 发布-雅余

WordPress & Typecho 极简主题 Writing v1.0 发布-雅余

WordPress & Typecho 极简主题 Writing v1.0 发布-雅余

WordPress & Typecho 极简主题 Writing v1.0 发布-雅余

详细介绍和使用见两个主题的发布页面。

WordPress 极简主题:Writing

Typecho 极简主题:Writing

欢迎提供建议,以便继续完善。

WordPress & Typecho 极简主题 Paper v1.0 发布

作者 Jeff
2023年12月10日 10:11

是的,你没看错,时隔9天,再发布一款免费极简主题,取名 Paper。在 WordPress 和 Typecho 两个程序上均可免费享用。

Paper,一页纸,一片让博主可写可绘的极简创作空间。

本主题为极简主题,禅定黄+静思蓝暗黑配色,无 JS、CSS 文件载入,对程序极简优化。主题支持自定义背景、自定义菜单,保留搜索及评论功能;内置文章归档模板;已作中文字体优化,内置3种字体方案可选。

力求极简,WordPress 版本对程序自带功能进行禁用,若对使用有影响,酌情删除即可。主题仅9个文件,文件大小控制在共50kb左右。

主题免费开源,供学习交流,不提供售后支持。既然供学习交流,故也欢迎和我交流。如有建议,欢迎评论留言,不喜勿喷。

主题可按授权方式继续随意改造,但望保留我的信息。感谢!

WordPress & Typecho 极简主题 Paper v1.0 发布-雅余

WordPress & Typecho 极简主题 Paper v1.0 发布-雅余

WordPress & Typecho 极简主题 Paper v1.0 发布-雅余

WordPress & Typecho 极简主题 Paper v1.0 发布-雅余

WordPress & Typecho 极简主题 Paper v1.0 发布-雅余

详细介绍和使用见两个主题的发布页面。

WordPress 极简主题:Paper

Typecho 极简主题:Paper

欢迎提供建议,以便继续完善。

❌
❌