关于ord()和chr()函数的问题

以我目前的理解,ord返回编码,chr返回字符串
现在试试:

ord("ab")

然后得到报错:
TypeError: ord() expected a character, but string of length 2 found
但如果加上\x就好了:

>>> ord("\xab")
171
>>> 

不过这个方法仅对两个字母或数字有效

ord("\xabc")
Traceback (most recent call last):
File "", line 1, in
ord("\xabc")
TypeError: ord() expected a character, but string of length 2 found
ord("\x123")
Traceback (most recent call last):
File "", line 1, in
ord("\x123")
TypeError: ord() expected a character, but string of length 2 found

现在,谁能告诉我,这个\x究竟是什么?网上很多资料都没有提到

1个回答

\x表示十六进制编码转义(因为正好abcdef都是合法的16进制数字,其实不是字面的ab),你字符串只能取1个字符

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
delphi ord的使用问题
var i:integer; i:=1; 我想发挥是字符串1的ASCII码,但 ord(i.tostring),提示类型冲突,请问各位大神可以怎样解决
能不能详细讲解一下这个PHP加密算法每行代码的意思?
![图片说明](https://img-ask.csdn.net/upload/201910/15/1571101789_147749.png) ``` <?php function encrypt($data, $key) { $key = md5($key); $x = 0; $len = strlen($data); $l = strlen($key); $char = ''; $str = ''; for ($i = 0; $i < $len; $i++) { if ($x == $l) { $x = 0; } $char.= $key{$x}; $x++; } for ($i = 0; $i < $len; $i++) { $str.= chr(ord($data{$i}) + (ord($char{$i})) % 256); } return base64_encode($str); } // 解密算法 function decrypt($data, $key) { $key = md5($key); $x = 0; $data = base64_decode($data); $len = strlen($data); $l = strlen($key); $char = ''; $str = ''; for ($i = 0; $i < $len; $i++) { if ($x == $l) { $x = 0; } $char.= substr($key, $x, 1); $x++; } for ($i = 0; $i < $len; $i++) { if (ord(substr($data, $i, 1)) < ord(substr($char, $i, 1))) { $str.= chr((ord(substr($data, $i, 1)) + 256) - ord(substr($char, $i, 1))); } else { $str.= chr(ord(substr($data, $i, 1)) - ord(substr($char, $i, 1))); } } return $str; } // 加密解密均需要用同一个加密密钥 $data = 'PHP含秘钥的加密解密算法'; // 被加密信息 $key = 'www.mafutian.net'; // 密钥 $encrypt = encrypt($data, $key); $decrypt = decrypt($encrypt, $key); echo '明文:' . $data; echo '<br />'; echo '密文:' . $encrypt; echo '<br />'; echo '明文:' . $decrypt; ?> ```
关于Python逆向的一个简单问题求助。
下面附上函数代码,求解出flag值 key值已经给出,求帮助啊,逆推过程应该怎么写啊 import base64 def encode(flag): l1 = [] for a in flag: l1.append(chr(int(ord(a)) - 10)) l1.reverse()#反向存储 mid = ''.join(list(l1)) key = base64.b64encode(mid) print key key = 'YmVVJ2ReT2ZqZVVpWSY==' 上边的代码缩进有点问题 代码在这里http://paste.ubuntu.com/23493247/
SAP CO88报错:期间 007 2019 结算之后,状态 GIFT/TABG 被冲销
SAP有个生产订单CO88结算后,10月份核查库存不对就把这个生产订单的库存冲销掉了,然后财务CO888月份的账期就报错“期间 007 2019 结算之后,状态 GIFT/TABG 被冲销”,去网上查了些资料,对订单做TECO、重新做入库、将订单状态改为收货状态DLV都不行,尝试关闭生产订单会报错:订单 ORD 1014313 的余额不是零; 订单不能被删除;订单 1014313:采购单4200001985仍然存在;订单 1014313 的未处理将来更改记录阻止删除标记/完成。请问有什么办法可以把这个结算错误消除掉么?
小白,想用Python3.7+Opencv4.1.1+APP:IP摄像头,调用手机的摄像头。 结果出现如下状况,还请各位大佬指点!
小白,想用Python3.7+Opencv4.1.1+APP:IP摄像头,调用手机的摄像头。 结果出现如下状况,还请各位大佬指点! ``` import cv2 url = 'http://192.168.0.101:8081/' cap = cv2.VideoCapture(url) while (1): ret, frame = cap.read() cv2.imshow('', cap.read()) if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows() ``` 我修改了一下,代码成这样了 ``` import cv2 url = 'http://192.168.0.101:8081' cap = cv2.VideoCapture(url) while cap.isOpened(): ret, frame = cap.read() cv2.imshow('frame', frame) if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows() ``` 运行并没有反应,我感觉直接没有进while,也就是说摄像头根本没数据流,请问各位大佬怎么改呢?
python 首字母查是否是字母
import keyword,string def Identifier(s): kw = keyword.kwlist #内置关键字 #请用if-else完成检测,打印conflict或者False #your code here if s in kw or s in dir(__builtins__): print("conflict") elif ord('s[0]') not in range(chr(65),chr(90)): print("False") else : print("Ture") return 需要检查首字母是否是字母,如果是字母返回Ture,如果是数字或者符号,返回False
mysql数据库的group by问题
可执行sql: SELECT oc.cabinet_id objectId, CONCAT_WS( '/', di.driver_name, ri.plate_number ) driver, tcc.business_mode businessMode, so.`name` subName, cci.carteam_name affName, oo.order_No orderNo, oo.book_Space_No bookSpaceNo, oc.cabinet_No cabinetNo, oc.cabinet_Type conType, oo.order_type orderType, ss.dispatch_type dispatchType, st.remark remark, oo.address address, date_format( cc.settlement_date, '%Y-%m' ) endDate, date_format( cc.settlement_date, '%Y-%m-%d' ) settlementDate, cc.cost_status costStatus, sum( cc.pay_amount ) total FROM t_ord_cabinet_cost cc LEFT JOIN t_ord_cabinet oc ON oc.cabinet_id = cc.cabinet_id LEFT JOIN t_ord_order oo ON oo.order_id = oc.order_id LEFT JOIN t_sch_task st ON st.cabinet_id = oc.cabinet_id LEFT JOIN t_sch_schedule ss ON ss.id = st.schedule_id LEFT JOIN t_car_carteam_info cci ON cci.carteam_id = ss.carteam_id LEFT JOIN t_dri_driver_info di ON ss.driver_id = di.driver_info_id LEFT JOIN t_car_trailer_info ri ON ss.trailer_id = ri.trailer_id LEFT JOIN t_sys_org so ON so.org_code = oo.org_code LEFT JOIN t_cus_customer tcc ON tcc.customer_id = cc.settlement_customer_id LEFT JOIN sys_user_info us ON us.user_id = tcc.salesman_id WHERE cc.cost_status IN ( 0, 3 ) AND ( cc.settlement_date IS NOT NULL OR cc.settlement_date != '' ) AND cc.break_rule_state IN ( 0, 2 ) AND cc.cost_type_code IN ( '26', '2', '3', '8', '9', '10' ) AND ( cc.pay_amount != 0 AND cc.pay_amount IS NOT NULL ) AND so.LEVEL = 2 AND so.minimum_guarantee = 1 AND oo.order_status != 0 AND ss.schedule_status = 4 AND tcc.settle_accounts = 1 GROUP BY objectId, so.org_code, cci.carteam_id, endDate, di.driver_info_id, ri.plate_number, oo.order_id, ss.id, st.id, tcc.business_mode, cc.cost_status, date_format( cc.settlement_date, '%Y-%m-%d' ) ORDER BY driver, objectId, orderNo, bookSpaceNo, dispatchType, endDate DESC 不可执行sql: SELECT oc.cabinet_id objectId, CONCAT_WS( '/', sc.driver_name, sc.plate_number ) driver, sc.business_mode businessMode, oo.`company_name` subName, sc.carteam_name affName, oo.order_No orderNo, oo.book_Space_No bookSpaceNo, oc.cabinet_No cabinetNo, oc.cabinet_Type conType, oo.order_type orderType, sc.dispatch_type dispatchType, sc.task_remark remark, oo.address address, date_format( cc.settlement_date, '%Y-%m' ) endDate, date_format( cc.settlement_date, '%Y-%m-%d' ) settlementDate, cc.cost_status costStatus, sum( cc.pay_amount ) total FROM t_ord_cabinet_cost cc LEFT JOIN t_sett_cost sc ON cc.cabinet_cost_id = sc.cabinet_cost_id LEFT JOIN t_ord_cabinet oc ON oc.cabinet_id = cc.cabinet_id LEFT JOIN t_ord_order oo ON oo.order_id = oc.order_id LEFT JOIN t_sys_org so ON oo.org_code = so.org_code WHERE cc.cost_status IN ( 0, 3 ) AND ( cc.settlement_date IS NOT NULL OR cc.settlement_date != '' ) AND cc.break_rule_state IN ( 0, 2 ) AND sc.cost_type_class IN ( 0, 1 ) AND ( cc.pay_amount != 0 AND cc.pay_amount IS NOT NULL ) AND so.LEVEL = 2 AND so.minimum_guarantee = 1 AND oo.order_status != 0 AND sc.schedule_status = 4 AND sc.settle_accounts = 1 GROUP BY objectId, so.org_code, sc.carteam_id, endDate, sc.driver_info_id, sc.plate_number, oo.order_id, -- ss.id, -- st.id, sc.business_mode, cc.cost_status, date_format( cc.settlement_date, '%Y-%m-%d' ) ORDER BY driver, objectId, orderNo, bookSpaceNo, dispatchType, endDate DESC 问题:为什么第一个sql语句可以执行,第二个sql语句不可执行?
错误 27 error C2449: 在文件范围内找到“{”(是否缺少函数头?)
#include<stdio.h> #include<stdlib.h> #define STACK_INIT_SIZE 100 //存储空间初始分配量 #define STACKINCREAMENT 10 //存储空间分配增量 #define num 10 typedef int MazeType[num][num]; int curstep; //定前当前足迹 MazeType m = {0,0,0,0,0,0,0,0,0,0, 0,1,1,0,1,1,1,0,1,0, 0,1,1,0,1,1,1,0,1,0, 0,1,1,1,1,0,0,1,1,0, 0,1,0,0,0,1,1,1,1,0, 0,1,1,1,0,1,1,1,1,0, 0,1,0,1,1,1,0,1,1,0, 0,1,0,0,0,1,0,0,1,0, 0,0,1,1,1,1,1,1,1,0, 0,0,0,0,0,0,0,0,0,0}; //定义了一个全局变量,10*10的迷宫 typedef struct{ int ord; //通道块在路径上的序号 PosType seat; //通道块在迷宫中的“坐标位置” int di; //从此通道块走向下一通道块的“方向”。1表示向右,2表示向上,3表示向左,4表示向下。 }SElemType; //栈的元素类型 typedef struct{ SElemType *base; //栈底指针,在栈构造之前和销毁之后为NULL SElemType *top; //栈顶指针 int stacksize; //当前已分配的存储空间,以元素为单位 }SqStack; int InitStack(SqStack *S){ (*S).base = (SElemType *) malloc (STACK_INIT_SIZE * (sizeof(SElemType))); if(!(*S).base) exit(0); (*S).top = (*S).base; (*S).stacksize = STACK_INIT_SIZE; return 1; } int Push(SqStack *S, SElemType e){ if((*S).top-(*S).base >= (*S).stacksize){ (*S).base = (SElemType *) realloc ((*S).base, ((*S).stacksize + STACKINCREAMENT) * sizeof(SElemType)); if(!(*S).base) exit(0); (*S).top = (*S).base + (*S).stacksize; (*S).stacksize += STACKINCREAMENT; } *((*S).top) = e; (*S).top ++; return 1; } int Pop(SqStack *S, SElemType* e){ //删除S的栈顶元素并用e返回其值 if((*S).top == (*S).base) exit(0); (*S).top --; *e = *(*S).top; return 1; } bool StackEmpty(SqStack S){ if(S.top == S.base) return true; return false; } typedef struct{ //通道块在迷宫中的位置,横纵坐标 int x; int y; }PosType; int Pass(PosType curpos){ //判断该位置是否可通过.若为1则可通过,若为0则此通道块为墙,若为-1则此通道块曾被纳入过路径但不通, if ( m[curpos.x][curpos.y] == 1 ) return 1; //若为其余整数说明此通道块已在当前路径上。 else return 0; } void FootPrint(PosType curpos){ //留下足迹 m[curpos.x][curpos.y] = curstep; } PosType NextPos(PosType curpos, int n){ //下一位置 switch(n) { case 0: //当前位置的右通路块 curpos.x += 0; curpos.y += 1; case 1: //当前位置的上通路块 curpos.x -= 1; curpos.y += 0; case 2: //当前位置的左通路块 curpos.x += 0; curpos.y -= 1; case 3: //当前位置的下通路块 curpos.x += 1; curpos.y += 0; } return curpos; } void MarkPrint(PosType curpos){ //留下不能通过的标记 m[curpos.x][curpos.y] = -1; } void PrintMaze(MazeType maze){ //打印迷宫 for(int i = 0; i < num; i++){ for(int j = 0; j < num; j++){ printf("%d",maze[i][j]); } printf("\n"); } } bool MazePath(MazeType maze, PosType start, PosType end){ //求迷宫中是否有从start到end的路径 PosType curpos; SqStack S; SElemType e; InitStack(&S); curpos = start; //起点为当前位置 curstep = 1; //路径中的第一步 do{ if( Pass(curpos) ){ //当前位置可通过 maze[curpos.x][curpos.y] = curstep; //在迷宫中标记出足迹 e.ord = curstep; e.seat.x = curpos.x; e.seat.y = curpos.y; e.di = 0; Push(&S, e); //加入路径中 if(curpos.x == end.x && curpos.y == end.y ) return true; //到达终点 curstep ++; //探索下一步 curpos = NextPos(curpos, 0); //下一位置在当前位置的右侧 } else{ Pop(&S, &e); curstep--; //路径上减少一个点 while(e.di == 3 && !StackEmpty(S)){ //该位置不通,留下不能通过的标记,并退回一步 MarkPrint(e.seat); Pop(&S, &e); curstep--; } if(e.di < 3){ //换下一个方向探索 e.di ++; Push(&S,e); curpos = NextPos(e.seat,e.di); //设定当前位置是该新方向上的相邻块 curstep ++; } } }while(!StackEmpty(S)); return false; } void main(){ void PrintMaze(MazeType maze); bool MazePath(MazeType maze, PosType start, PosType end); PosType start = {1,1}; PosType end = {num-1,num-1}; printf("迷宫的结构如下:"); PrintMaze(m); if( MazePath(m,start,end) ){ printf("\n从迷宫的入口到出口的路径如下:"); PrintMaze(m); } else printf("此迷宫没有从入口到出口的路径。"); } 错误提示有60多个... 不知道错在哪.. 求助!! 粘几个错误如下: 错误 33 error C2449: 在文件范围内找到“{”(是否缺少函数头?) e:\文件文件\数据结构程序\迷宫问题2\迷宫问题2\maze.c 70 1 迷宫问题2 错误 45 error C2449: 在文件范围内找到“{”(是否缺少函数头?) e:\文件文件\数据结构程序\迷宫问题2\迷宫问题2\maze.c 98 1 迷宫问题2 错误 55 error C2146: 语法错误: 缺少“;”(在标识符“start”的前面) e:\文件文件\数据结构程序\迷宫问题2\迷宫问题2\maze.c 153 1 迷宫问题2 错误 51 error C2146: 语法错误: 缺少“;”(在标识符“MazePath”的前面) e:\文件文件\数据结构程序\迷宫问题2\迷宫问题2\maze.c 151 1 迷宫问题2 错误 58 error C2146: 语法错误: 缺少“;”(在标识符“end”的前面) e:\文件文件\数据结构程序\迷宫问题2\迷宫问题2\maze.c 154 1 迷宫问题2
ord(‘中’)出错代码如下
>>> ord('中') Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: ord() expected a character, but string of length 3 found
利用顺序栈求后缀表达式,为什么我的程序无法入栈出栈呢?(C++)
程序功能是实现整数后缀表达式的求值,谢谢大佬帮我看看! ``` #include<iostream> #include<stdlib.h> using namespace std; #define MAXSIZE 100 //操作数栈 typedef struct{ int ch[MAXSIZE]; int *base; int *top; int stacksize; }SqStack; int ord(char str)//返回ASCALL码值 { int n; n = str-'0'; return n; } //初始化栈 void InitStack(SqStack &S) { S.base = new int[MAXSIZE]; if(!S.base) exit(0); S.top = S.base; S.stacksize = MAXSIZE; } //入栈 void Push(SqStack &S,int e) { if(S.top-S.base==S.stacksize) exit(0); *S.top= e; *S.top++; } //出栈 int Pop(SqStack &S) { int e=0; if(S.top==S.base) exit(0); return e=*--S.top; } void expr(SqStack &S) //从键盘输入逆波兰表达式,以‘$’表示输入结束,本算法求逆波兰式表达式的值。 { char x; int num,x1,x2; cout<<"输入后缀表达式:"; cin>>x; do{ switch(x) { case '0'||'1'||'2'||'3'||'4'||'5'||'6'||'7'||'8'||'9': while(x<='9'&&x>'0') { num=num*10+ord(x);//处理整数 cin>>x;} Push(S,num); num=0;//数压入栈,下个数初始化 break; case ' ':break; //遇空格,继续读下一个字符。 case '+':Push(S,Pop(S)+Pop(S));break; case '-': x1=Pop(S); x2=Pop(S); Push(S,x2-x1);break; case '*':Push(S,Pop(S)*Pop(S));break; case '/':x1=Pop(S);x2=Pop(S);Push(S,x2/x1);break; default: cout<<"非法字符!"<<endl; exit(0);//其它符号不作处理。 }//结束switch cin>>x;//读入表达式中下一个字符。 }while(x!='#');//结束while(x!=‘#’) cout<<"后缀表达式的值为:"<<Pop(S)<<endl; }//算法结束。 int main() { SqStack S; InitStack(S); expr(S); return 0; } ```
python中的waitKey语句总是出错,为何我执行完出来画面后就卡了?
import cv2 lena = cv2.imread("lena.bmp") cv2.imshow("demo",lena) key = cv2.waitKey(2000) if key == ord('T'): cv2.destroyWindow("demo") 我对上述语句的理解是:先把lena的这个图片展示在名字为demo的窗口上, 然后在2000毫秒内,若点击的键是T的话,将会让名字叫demo的窗口消失。 可是我执行后,按了T键,就卡住了,请问这是为什么?
SQL 字段带点 不能提取
我的订单表有一个字段是下单日期 Ord.Date,Ord和Date中间有个点.我用中括号[Ord.Date]或者反问号,或者单引号,或者双引号,都不能Select成功,何解?列的日期格式是9/21/2018
在服务器(windows server2012 R2 Standard)上读取视频cap.read()占用内存特别大,怎么解决?
**用python36,opencv-python,读取视频流或者读取本地视频文件。在服务器(windows server2012 R2 Standard)上运行的时候,read()需要400MB左右内存,但是在其他设备上(笔记本电脑、虚拟机,同样的操作系统)只占用40~50MB内存。各路大神,请问怎么解决,下边是代码:** ``` cap = cv.VideoCapture(msg) cap.set(3,960) cap.set(4,540) process = psutil.Process(os.getpid()) while cap.isOpened(): (ret, frame) = cap.read(1) print('countsize===', os.getpid(), 'Used Memory:', process.memory_info().rss / 1024 / 1024, 'MB', ) if ret: cv.imshow(threading.current_thread().name, frame) if cv.waitKey(1) & 0xff == ord('q'): break cap.release() cv.destroyAllWindows() ```
关于mysql重复计算的问题
现有两张数据表 input_order ord_id item_id name input_num date A001 1 火龙果 40 2017-11-04 A002 2 芒果 60 2017-11-04 A003 3 橘子 20 2017-11-04 A004 2 芒果 80 2017-11-04 output_order ord_id item_id name output_num date B001 1 火龙果 20 2017-11-04 B002 2 芒果 10 2017-11-04 B003 3 橘子 10 2017-11-04 B004 2 芒果 20 2017-11-04 使用如下算法语言, SELECT input_order.item_id,input_order.ord_prod_name, Sum(input_order. input_num - output_order.out_num) as inventorynum FROM input_order LEFT JOIN output_order ON input_order.item_id = output_order.item_id WHERE input_order.ord_date = output_order.ord_date GROUP BY input_order.item_id 想要的结果是按item_id分组计算同一天的总库存,即用Sum(input_order. input_num - output_order.out_num) 进货减去出货,现在发现问题,任意水果(示例图为芒果)同天有一笔以上进货时,得到的结果会出错,变成笔数*正确数值,如果<=一笔则能正确计算,求解!!!原因!!
代码没问题,但执行不出预期的结果啊
// 载入该用户下的菜单 @SuppressWarnings("unchecked") public void loadMenuByUserId(){ List<Map<String,String>> menuList = (List<Map<String,String>>)daoUtil.getDaoHelper() .queryForList("tm.menu.selectMenuByUserId",TMUtil.getUser().getUserId()); System.out.println("menuList:"+menuList.toString()); System.out.println("menuListJson:"+JSONArray.fromObject(menuList).toString()); ServletUtil.sendAsJson(response,JSONArray.fromObject(menuList).toString()); } 在控制台可以输出menuList:[{ord=1, pid=0, id=1, text=功能菜单, url=null}, {ord=1, pid=1, id=2, text=系统管理, url=null}, {ord=1, pid=2, id=3, text=菜单管理, url=MenuAction!toMenuMain.action}, {ord=3, pid=2, id=5, text=用户管理, url=UserAction!toUserMain.action}, {ord=2, pid=2, id=4, text=角色管理, url=RoleAction!toRoleMain.action}] 但JSONArray.fromObject(menuList).toString()却执行不了,在控制台输出不了,所以后面的ServletUtil.sendAsJson函数也不能将其写到前台页面。 debug时显示the source attachment does not contain the source for the JSONArray.class。急求大神帮忙啊!!!
Python OpenCV人脸识别错误待解
在编写人脸识别的时候(代码如下): ``` import cv2 import numpy as np cascPath = "C:\opencv\sources\data\haarcascades\haarcascade_frontalface_alt2.xml" faceCascade = cv2.CascadeClassifier(cascPath) video_capture = cv2.VideoCapture(0) while True: ret, frame = video_capture.read() gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) faces = faceCascade.detectMultiScale( gray, scaleFactor=1.1, minNeighbors=10, #Adjust accuracy minSize=(50, 50), flags=cv2.CASCADE_SCALE_IMAGE ) for (x, y, w, h) in faces: cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 255, 255), 2) cv2.imshow('Video', frame) if cv2.waitKey(1) & 0xFF == ord('q'): break if cv2.waitKey(1) & 0xFF == ord('s'): cv2.imwrite('test1.png', frame) img = cv2.imread("test1.png") face = img[x:x+w,y:y+h] cv2.imshow('Face', face) cv2.imwrite("face_detected.png", face) images=[] images.append(cv2.imread("klp.jpg",cv2.IMREAD_GRAYSCALE)) images.append(cv2.imread("wh.jpg",cv2.IMREAD_GRAYSCALE)) images.append(cv2.imread("wk.jpg",cv2.IMREAD_GRAYSCALE)) Labels=[0,1,2] recognizer = cv2.face.LBPHFaceRecognizer_create() recognizer.train(images, np.array(Labels)) predict_image = cv2.imread("face_detected.png",cv2.IMREAD_GRAYSCALE) label,confidence= recognizer.predict(predict_image) print("Label=", label) print("Confidence=", confidence) video_capture.release() cv2.destroyAllWindows() ``` 出现了如下问题: ``` Exception has occurred: error OpenCV(4.1.0) C:\projects\opencv-python\opencv\modules\core\src\matrix.cpp:235: error: (-215:Assertion failed) s >= 0 in function 'cv::setSize' File "F:\learn_python\Models\DetectFace&Recognize.py", line 41, in <module> recognizer.train(images, np.array(Labels)) ```
python进行文件异或时的编码问题
``` import pdb import codecs f = open('j:\\misc','rb+') data = codecs.encode(f.read(),'hex_codec') xor = ord('s') data2 = str() print(data[1]) print(data[0]) pdb.set_trace() n = 1 for i in range(0,len(data),2): #print(bytes(data[i])) m = chr(data[i])+chr(data[i+1]) print(m) data1 = chr(int(m,base = 16)^xor) data2 += data1 print(len(data1)) print(data1.encode()) f.close() f = open('j:\\1.png','wb+') f.write(data2.encode()) print(data2) f.close() ``` 我是一个字节一个字节的取,进行异或,不过有一些进行异或后会出现在异或后的16进制结果上加上c2或者c3,导致异或后的文件不能打开
关于python编码的问题?
这是一个文件异或的脚本 ``` import pdb import codecs f = open('j:\\misc','rb+') data = codecs.encode(f.read(),'hex_codec') xor = ord('s') data2 = str() print(data[1]) print(data[0]) pdb.set_trace() n = 1 for i in range(0,len(data),2): #print(bytes(data[i])) m = chr(data[i])+chr(data[i+1]) print(m) data1 = chr(int(m,base = 16)^xor) data2 += data1 print(len(data1)) print(data1.encode()) f.close() f = open('j:\\1.png','wb+') f.write(data2.encode()) print(data2) f.close() ``` 我是一次取一个字节,不过异或出来有些要变成两个字节,会加上c2或者c3,导致我的文件会打不开
java和php的hmac_sha1结果不同,求高手帮忙
最近遇到hmac_sha1跨语言加密的问题,只提供给了java加密文件,没提供php的,我用php hmac_sha1内置函数,得到的sig加密结果不同,欢迎高手帮忙提供相对应的php代码,提供的java类如下 欢迎加QQ: 847036019 public abstract class Coder { public static final String KEY_SHA = "SHA"; public static final String KEY_MD5 = "MD5"; public static final char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; public static final String KEY_MAC = "HmacSHA1"; public static byte[] decryptBASE64(String key) throws Exception { return (new BASE64Decoder()).decodeBuffer(key); } /** * 初始化HMAC密钥 */ public static String initMacKey() throws Exception { KeyGenerator keyGenerator = KeyGenerator.getInstance(KEY_MAC); SecretKey secretKey = keyGenerator.generateKey(); return encryptBASE64(secretKey.getEncoded()); } /** * HMAC加密 */ public static byte[] encryptHMAC(byte[] data, String key) throws Exception { SecretKey secretKey = new SecretKeySpec(decryptBASE64(key), KEY_MAC); Mac mac = Mac.getInstance(secretKey.getAlgorithm()); mac.init(secretKey); return mac.doFinal(data); } public static void main(String[] args) { try { String param = ''; String appkey = ''; byte[] bytes = Coder.encryptHMAC((param).getBytes("utf-8"), appkey);//['-115','-101','97','-26','-80','-109','-92','33','-6','71','-122','-64','-17','-29','-101','-53','88','-93','-22','-104'] String sig = new BigInteger(bytes).toString();//-653068794747578802236590292838260814592085857640 System.out.println("sig:" + sig); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } java sig得出来的结果为 -653068794747578802236590292838260814592085857640 php我用相对应的加密即php自带函数 $signature = mhash(MHASH_SHA1,$sigstr,base64_decode($appkey)); $hash = str_split($signature); foreach ($hash as $index=>$value) { if (ord($value)>128) { $hash[$index] = ord($value)-128*2; } else { $hash[$index] = ord($value); } } php得到的ascii数组为$array('-115','-101','97','-26','-80','-109','-92','33','-6','71','-122','-64','-17','-29','-101','-53','88','-93','-22','-104'); 请问该php如何处理得到下面的值 -653068794747578802236590292838260814592085857640 java用的是new BigInteger(bytes).toString();php该如何处理
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载    点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量 path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、PDF搜索网站推荐 对于大部
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 顺便拉下票,我在参加csdn博客之星竞选,欢迎投票支持,每个QQ或者微信每天都可以投5票,扫二维码即可,http://m234140.nofollow.ax.
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入  假设现有4个人
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 欢迎 改进 留言。 演示地点跳到演示地点 html代码如下`&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;music&lt;/title&gt; &lt;meta charset="utf-8"&gt
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐厅的约会 餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!” 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不动了,升迁也无望,于是拿着手里
经典算法(5)杨辉三角
写在前面: 我是 扬帆向海,这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。技术是开源的、知识是共享的。 这博客是对自己学习的一点点总结及记录,如果您对 Java、算法 感兴趣,可以关注我的动态,我们一起学习。 用知识改变命运,让我们的家人过上更好的生活。 目录一、杨辉三角的介绍二、杨辉三角的算法思想三、代码实现1.第一种写法2.第二种写法 一、杨辉三角的介绍 百度
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
JDK12 Collectors.teeing 你真的需要了解一下
前言在 Java 12 里面有个非常好用但在官方 JEP 没有公布的功能,因为它只是 Collector 中的一个小改动,它的作用是 merge 两个 collector 的结果,这句话
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看
SQL-小白最佳入门sql查询一
一 说明 如果是初学者,建议去网上寻找安装Mysql的文章安装,以及使用navicat连接数据库,以后的示例基本是使用mysql数据库管理系统; 二 准备前提 需要建立一张学生表,列分别是id,名称,年龄,学生信息;本示例中文章篇幅原因SQL注释略; 建表语句: CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // dosho
【图解经典算法题】如何用一行代码解决约瑟夫环问题
约瑟夫环问题算是很经典的题了,估计大家都听说过,然后我就在一次笔试中遇到了,下面我就用 3 种方法来详细讲解一下这道题,最后一种方法学了之后保证让你可以让你装逼。 问题描述:编号为 1-N 的 N 个士兵围坐在一起形成一个圆圈,从编号为 1 的士兵开始依次报数(1,2,3…这样依次报),数到 m 的 士兵会被杀死出列,之后的士兵再从 1 开始报数。直到最后剩下一士兵,求这个士兵的编号。 1、方
致 Python 初学者
文章目录1. 前言2. 明确学习目标,不急于求成,不好高骛远3. 在开始学习 Python 之前,你需要做一些准备2.1 Python 的各种发行版2.2 安装 Python2.3 选择一款趁手的开发工具3. 习惯使用IDLE,这是学习python最好的方式4. 严格遵从编码规范5. 代码的运行、调试5. 模块管理5.1 同时安装了py2/py35.2 使用Anaconda,或者通过IDE来安装模
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,
程序员:我终于知道post和get的区别
IT界知名的程序员曾说:对于那些月薪三万以下,自称IT工程师的码农们,其实我们从来没有把他们归为我们IT工程师的队伍。他们虽然总是以IT工程师自居,但只是他们一厢情愿罢了。 此话一出,不知激起了多少(码农)程序员的愤怒,却又无可奈何,于是码农问程序员。 码农:你知道get和post请求到底有什么区别? 程序员:你看这篇就知道了。 码农:你月薪三万了? 程序员:嗯。 码农:你是怎么做到的? 程序员:
GitHub标星近1万:只需5秒音源,这个网络就能实时“克隆”你的声音
作者 | Google团队译者 | 凯隐编辑 | Jane出品 | AI科技大本营(ID:rgznai100)本文中,Google 团队提出了一种文本语音合成(text to speech)神经系统,能通过少量样本学习到多个不同说话者(speaker)的语音特征,并合成他们的讲话音频。此外,对于训练时网络没有接触过的说话者,也能在不重新训练的情况下,仅通过未知说话者数秒的音频来合成其讲话音频,即网
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
      11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI 算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC
【技巧总结】位运算装逼指南
位算法的效率有多快我就不说,不信你可以去用 10 亿个数据模拟一下,今天给大家讲一讲位运算的一些经典例子。不过,最重要的不是看懂了这些例子就好,而是要在以后多去运用位运算这些技巧,当然,采用位运算,也是可以装逼的,不信,你往下看。我会从最简单的讲起,一道比一道难度递增,不过居然是讲技巧,那么也不会太难,相信你分分钟看懂。 判断奇偶数 判断一个数是基于还是偶数,相信很多人都做过,一般的做法的代码如下
【管理系统课程设计】美少女手把手教你后台管理
【后台管理系统】URL设计与建模分析+项目源码+运行界面 栏目管理、文章列表、用户管理、角色管理、权限管理模块(文章最后附有源码) 一、这是一个什么系统? 1.1 学习后台管理系统的原因 随着时代的变迁,现如今各大云服务平台横空出世,市面上有许多如学生信息系统、图书阅读系统、停车场管理系统等的管理系统,而本人家里就有人在用烟草销售系统,直接在网上完成挑选、购买与提交收货点,方便又快捷。 试想,
4G EPS 第四代移动通信系统
目录 文章目录目录4G EPSEPS 的架构EPS 的参考模型E-UTRANUEeNodeBEPCMME(移动性控制处理单元)S-GW(E-RAB 无线访问承载接入点)P-GW(PDN 接入点)HSS(用户认证中心)PCRF(计费规则与策略)SPR(用户档案)OCS(在线计费)OFCS(离线计费)接口类型Uu 接口(空中接口,UE 和 AN 之间)S1 接口(AN 和 CN 之间)S1-U 接口和
相关热词 c# 输入ip c# 乱码 报表 c#选择结构应用基本算法 c# 收到udp包后回包 c#oracle 头文件 c# 序列化对象 自定义 c# tcp 心跳 c# ice连接服务端 c# md5 解密 c# 文字导航控件
立即提问