数字ID和字符串ID互相转化
对于想隐藏真实id的需求,比如想加密userId等
使用示例:
* 不指定长度* AlphaIDCustom(12354); //会将数字转换为字母。* AlphaIDCustom('PpQXn7COf',true);//会将字母ID转换为对应的数字。* 指定长度* AlphaIDCustom(123456,false,6);//指定生成字母ID的长度为6.* AlphaIDCustom('xyMSSI',ture,6);//会将字母ID转换为对应的数字.
源码:
/*** 数字ID和字符串ID互相转换* 如:* 不指定长度* AlphaIDCustom(12354); //会将数字转换为字母。* AlphaIDCustom('PpQXn7COf',true);//会将字母ID转换为对应的数字。* 指定长度* AlphaIDCustom(123465,false,6);//指定生成字母ID的长度为6.* AlphaIDCustom('xyMSSI',ture,6);//会将字母ID转换为对应的数字.* @param $in* @param false $to_num 是否转成数字* @param false $pad_up 长度限制* @param null $passKey 加密* @return false|string*/function AlphaIDCustom($in, $to_num = false, $pad_up = false, $passKey = null){
// $index = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";//乱序$index = 'SITEQZFyWtpPjRxVYc7uL094bOA8rDCBMmgki23XJnsfHd5oqNwzhUlGKave61';if ($passKey !== null) {for ($n = 0; $n<strlen($index); $n++) {$i[] = substr( $index,$n ,1);}$passhash = hash('sha256',$passKey);$passhash = (strlen($passhash) < strlen($index))? hash('sha512',$passKey): $passhash;for ($n=0; $n < strlen($index); $n++) {$p[] = substr($passhash, $n ,1);}array_multisort($p, SORT_DESC, $i);$index = implode($i);}$base = strlen($index);if ($to_num) {// Digital number <<-- alphabet letter code$in = strrev($in);$out = 0;$len = strlen($in) - 1;for ($t = 0; $t <= $len; $t++) {$bcpow = bcpow($base, $len - $t);$out = $out + strpos($index, substr($in, $t, 1)) * $bcpow;}if (is_numeric($pad_up)) {$pad_up--;if ($pad_up > 0) {$out -= pow($base, $pad_up);}}$out = sprintf('%F', $out);$out = substr($out, 0, strpos($out, '.'));} else {// Digital number -->> alphabet letter codeif (is_numeric($pad_up)) {$pad_up--;if ($pad_up > 0) {$in += pow($base, $pad_up);}}$out = "";for ($t = floor(log($in, $base)); $t >= 0; $t--) {$bcp = bcpow($base, $t);$a = floor($in / $bcp) % $base;$out = $out . substr($index, $a, 1);$in = $in - ($a * $bcp);}$out = strrev($out); // reverse}return $out;}
相关文章:
数字ID和字符串ID互相转化
对于想隐藏真实id的需求,比如想加密userId等 使用示例: * 不指定长度* AlphaIDCustom(12354); //会将数字转换为字母。* AlphaIDCustom(PpQXn7COf,true);//会将字母ID转换为对应的数字。* 指定长度* Alpha…...
「Qt中文教程指南」如何创建基于Qt Widget的应用程序(三)
Qt 是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。如今,Qt已被运用于超过70个行业、数千家企业,支持数百万设备及应用。 本文描述了如何使用…...
Django CSRF Bypass
自存用 Django CSRF Bypass (CVE-2016-7401) 漏洞分析...
微信小程序 —— 会议OA项目首页布局与Mock数据交互
14天阅读挑战赛如果世界上有奇迹,那一定是努力的另一个名字。 目录 一、小程序布局 1.1 Flex布局 1.2 Flex属性 二、OA会议首页搭建 2.1 首页底部菜单 2.2 创建后端结口 2.3 Mock模拟数据 2.4 首页轮播图搭建 2.5 首页内容搭建 一、小程序布局 1.1 Flex布…...
机器学习-K-近邻(KNN)算法
目录 一 . K-近邻算法(KNN)概述 二、KNN算法实现 三、 MATLAB实现 四、 实战 一 . K-近邻算法(KNN)概述 K-近邻算法(KNN)是一种基本的分类算法,它通过计算数据点之间的距离来进行分类。在…...
shell_38.Linux读取脚本名
读取脚本名 (1)示例 $ cat positional0.sh #!/bin/bash # Handling the $0 command-line parameter # echo This script name is $0. exit $ $ bash positional0.sh This script name is positional0.sh. $ (2)如果使用另一个命令来运行 shell 脚本,则命令…...
面试题-React(十七):如何使用RTK进行状态管理
Redux Toolkit(RTK) 是一个强大的工具集,旨在简化和改进Redux的使用。它提供了一组工具和约定,使Redux的配置和编写更加直观和高效。 一、Redux Toolkit简介 Redux Toolkit是一个由Redux官方团队开发和维护的库,旨在…...
网络安全—自学笔记
目录 一、自学网络安全学习的误区和陷阱 二、学习网络安全的一些前期准备 三、网络安全学习路线 四、学习资料的推荐 想自学网络安全(黑客技术)首先你得了解什么是网络安全!什么是黑客! 网络安全可以基于攻击和防御视角来分类…...
Java后端开发(五)-- 对象转换工具类
为避免返回给前端的字段信息太多,在缓解前、后端通信的带宽压力的前提下,对不必要的字段的信息进行不返回时,entity层对象需要向vo层对象进行转换,同事尽量减少geetter与setter方法的编码。 1. ConvertUtils工具类 import org.slf4j.Logger; import org.slf4j.LoggerFacto…...
pandas写入MySQL
安装好pandas、mysql pip install pandas pip install pymysql 导入pandas、mysql import pymysql as mysql import pandas as pd 建立连接 conmysql.connect(host10.10.0.221,userroot,passwordroot,databasepandas,port3306,charsetutf8) 创建游标 curcon.cursor() 读…...
TCP实战:即时通信-端口转发
1、即时通信是什么含义,要实现怎么样的设计? 即时通信,是指一个客户端的消息发出去,其他客户端可以接收到即时通信需要进行端口转发的设计思想服务端需要把在线的Socket管道存储起来一旦收到一个消息要推送给其他管道 服务端 pac…...
CMakeLists.txt详解
CMakeLists.txt详解 CMakeLists.txt是一个用于构建C/C项目的CMake配置文件。它定义了项目的编译选项,包括编译器类型、依赖库、预处理宏和子目录等。让我们逐步解析这个文件。 编译器检测 CMAKE_CXX_COMPILER_ID 变量用于检测编译器类型。在这个示例中࿰…...
记一个JSON返回数据的bug
记一个JSON返回数据的bug:‘Object of type int64 is not JSON serializable’ 我在打包数组进行json数据返回时,有一个参数是numpy数组里计算出来的,类型为int64,直接进行json打包会报错 提示(‘Object of type int64 is not JSON serializa…...
毫米波雷达模块技术革新:在自动驾驶汽车中的前沿应用
随着自动驾驶技术的快速发展,毫米波雷达模块的技术革新成为推动这一领域的关键因素之一。本文将深入研究毫米波雷达模块技术的最新进展,并探讨其在自动驾驶汽车中的前沿应用。 毫米波雷达模块的基本原理 解释毫米波雷达模块的基本工作原理,强…...
优秀数据库模式迁移工具的发展历程
数据库模式迁移可能是应用程序开发中风险最大的领域——因为这是一个困难的、有风险的和痛苦的过程。数据库模式迁移工具的存在是为了减轻这种痛苦,并且已经取得了长足的进步:从基本的CLI工具到GUI工具,从简单的SQL GUI客户端到一体化协作数据…...
【深度学习】数据集最常见的问题及其解决方案
简介 如果您还没有听过,请告诉您一个事实,作为一名数据科学家,您应该始终站在一个角落跟你说:“你的结果与你的数据一样好。” 尝试通过提高模型能力来弥补糟糕的数据是许多人会犯的错误。这相当于你因为原来的汽车使用了劣质汽…...
Excel文件带有密码的只读模式,如何设置?
Excel带有密码的除了打开密码和工作表保护以外,其实还有一种可以设置密码的方法,今天给大家分享如何设置带有密码的只读模式。 打开excel文件,将文件进行【另存为】设置,然后停留在保存路径的界面中,我们点击下面的工…...
【Qt之json文件】json文件介绍及相关读写类介绍、示例
JSON介绍 JSON(JavaScript Object Notation)是一种源自Javascript的编码对象数据的轻量级的数据交换格式,易于理解和编写,JSON但现在已广泛用作互联网上的数据交换格式。 Qt提供了处理JSON数据的支持。Qt中的JSON支持提供了一个易…...
arp 隔离
目录 问题查找解决方式参考 问题 linux 在使用双网卡系统时,当这两个不同网段的网口接到同一个交换机上,会出现 eth0 的 arp 请求,会在 eth1 上收到并回复,相当于自己检测到了自己的 ip。 查找 linux 的底层,默认情…...
数据结构与算法(文章链接汇总)
数据结构与算法(一):概述与复杂度分析 数据结构与算法(二):数组与链表 数据结构与算法(三):栈与队列 数据结构与算法(四):哈希表 数据…...
C++面向对象编程:从封装到实战
一、面向过程 VS 面向对象1. 面向过程(之前全部所学)核心:步骤化、流程驱动先做什么、再做什么,函数独立零散。适合:简单小程序、逻辑简单场景。2. 面向对象(C 核心)核心:万物皆对象…...
量子KIC模型与量子电池:理论与精确对角化技术
1. 量子KIC模型与量子电池的基础理论框架量子KIC模型(Kicked Ising Chain)是量子多体物理中一个极具研究价值的系统,它将传统的横向场伊辛模型(TFIM)与周期性脉冲(kick)相结合。这个模型之所以引…...
分布式量子计算中的多体纠缠与全局门技术
1. 分布式量子计算中的多体纠缠基础量子计算领域近年来最激动人心的突破之一,就是多量子比特系统的协同控制能力。作为一名长期跟踪量子硬件发展的研究者,我亲眼见证了从最初的两个量子比特纠缠到如今数十个量子比特系统的演进过程。在这个过程中&#x…...
工业现场VSCode调试突然断连?独家披露某头部车企已验证的5层容错机制——含自动重连握手协议、调试会话快照回滚、硬件Watchdog协同触发
更多请点击: https://intelliparadigm.com 第一章:工业现场VSCode调试断连问题的根源与挑战 在工业自动化产线中,基于 VSCode Remote-SSH 或 Cortex-Debug 插件对嵌入式 PLC、边缘网关(如树莓派RT-Linux)进行远程调试…...
互联网大厂Java求职面试问答详解:核心技术栈与业务场景实战
互联网大厂Java求职面试问答详解:核心技术栈与业务场景实战 面试背景 本次面试模拟场景为互联网大厂Java职位,面试官严肃专业,面试者谢飞机为一个水货程序员。问答涵盖Java SE、Spring Boot、微服务、消息队列、安全框架等多个技术栈…...
IntelliJ IDEA + SonarLint 插件:如何为团队项目定制专属的代码质量规则?
IntelliJ IDEA SonarLint 插件:团队代码质量治理的工程化实践 当十几个开发者同时向同一个代码库提交变更时,如何确保每个人都能遵循统一的代码卫生标准?这个问题困扰着许多技术团队。作为Tech Lead,我曾见证过因代码规范不一致导…...
DeepSeek-V4-平民指南
DeepSeek-V4平民指南:1.6万亿参数的AI助手,免费随便用!2026年4月24日,AI圈迎来了一场"全民狂欢" - DeepSeek-V4预览版正式发布,让顶尖AI能力真正走进了普通人的生活。🌟 一句话了解DeepSeek-V4 D…...
从工厂产线到智能小车:运动控制与机器视觉的跨界应用避坑指南
从工厂产线到智能小车:运动控制与机器视觉的跨界应用避坑指南 当工业级运动控制算法遇上消费级智能硬件的快速迭代需求,技术迁移过程中的适配性问题往往成为工程师的"隐形杀手"。一位汽车零部件产线的自动化工程师曾分享过他的困惑:…...
保姆级避坑指南:在Windows 11上用Anaconda为PyTorch 1.11.0创建Python 3.8虚拟环境,并搞定GPU加速(torchvision 0.12.0+cu113)
Windows 11下Anaconda环境配置与PyTorch 1.11.0 GPU加速全攻略 刚接触深度学习的开发者往往会在环境配置阶段遇到各种"玄学问题"。本文将手把手带你完成从零开始的完整配置流程,重点解决那些官方文档没告诉你、但实际工作中一定会遇到的坑。 1. 环境准备&…...
收藏!大模型面试八题深度复盘,带你从小白到技术大牛
本文详细复盘了美团大模型算法暑期实习二面过程,包含八道核心问题的逐题解析、考察意图及深度答案。内容涵盖实习项目、强化学习框架、模型幻觉处理、推理模式、行业趋势、MoE原理及代码实现等,旨在帮助大模型方向求职者提升面试准备,强调项目…...
