16进制字符串 转为 字节
| |
| import binascii |
| |
| |
| v1 = "4E2918885FD98109869D14E0231A0BF4" |
| |
| """ |
| bs = bytearray() # [] |
| for i in range(0, len(v1), 2): |
| item_hex = v1[i:i + 2] |
| item_int = int(item_hex, base=16) |
| bs.append(item_int) |
| v3 = bytes(bs) |
| print(v3) # b'N)\x18\x88_\xd9\x81\t\x86\x9d\x14\xe0#\x1a\x0b\xf4' |
| """ |
| |
| v3 = binascii.a2b_hex(v1) |
| print(v3) |
| |
| l = [int(i) for i in v3] |
| print(l) |
| |
| |
| l = [78, 41, 24, 136, 95, 217, 129, 9, 134, 157, 20, 224, 35, 26, 11, 244] |
| |
| print(bytearray(l)) |
| print(bytes(l)) |
| |
| l1 = [hex(i) for i in l] |
| print(l1) |
| |
| print(binascii.b2a_hex(bytearray(l))) |
| |
| |
逆向时有一些字符串是通过字节数组来表示(UTF-8编码)
提醒:逆向时有一些字符串是通过字节数组来表示(UTF-8编码)
| v1 = "武沛齐" |
| v2 = [230, 173, 166, 230, 178, 155, 233, 189, 144] |
| |
| import java.util.Arrays; |
| |
| public class Hello { |
| |
| public static void main(String[] args) { |
| |
| byte[] dataList = {97, 105, 100, 61, 50, 52, 54, 51, 56, 55, 53, 55, 49, 38, 97, 117, 116, 111, 95, 112, 108, 97, 121, 61, 48, 38, 99, 105, 100, 61, 50, 56, 57, 48, 48, 56, 52, 52, 49, 38, 100, 105, 100, 61, 75, 82, 69, 104, 69, 83, 77, 85, 74, 104, 56, 116, 70, 67, 69, 86, 97, 82, 86, 112, 69, 50, 116, 97, 80, 81, 107, 55, 87, 67, 104, 67, 74, 103, 38, 101, 112, 105, 100, 61, 48, 38, 102, 116, 105, 109, 101, 61, 49, 54, 50, 55, 49, 48, 48, 57, 51, 55, 38, 108, 118, 61, 48, 38, 109, 105, 100, 61, 48, 38, 112, 97, 114, 116, 61, 49, 38, 115, 105, 100, 61, 48, 38, 115, 116, 105, 109, 101, 61, 49, 54, 50, 55, 49, 48, 52, 51, 55, 50, 38, 115, 117, 98, 95, 116, 121, 112, 101, 61, 48, 38, 116, 121, 112, 101, 61, 51}; |
| |
| String dataString = new String(dataList); |
| System.out.println("字符串是:" + dataString); |
| |
| |
| try { |
| |
| String name = "武沛齐"; |
| byte[] v1 = name.getBytes("GBK"); |
| System.out.println(Arrays.toString(v1)); |
| |
| |
| byte[] v2 = name.getBytes("UTF-8"); |
| System.out.println(Arrays.toString(v2)); |
| } catch (Exception e) { |
| |
| } |
| } |
| } |
| |

需求来了:某个app逆向,在Java代码中得到一个字节数组 [-50,-28,-59,-26,-58,-21]
,请通过Python代码将这个字节数组转换成字符串?
-
在Java中的字节范围:-128127;Python中字节的范围:0255。
| Java 0 1 2 3 4 .. 127 -128 -127 -126 -3 -2 -1 |
| Python 0 1 2 3 4 .. 127 128 129 130 ...253 254 255 |
| java, 有符号:-128~127 |
| python,无符号:0~255 |
| byte_list = [-50,-28,-59,-26,-58,-21] |
-
让数字转化弄成字节并拼接起来 bytearray
| |
| byte_list = [-50, -28, -59, -26, -58, -21] |
| |
| bs = bytearray() |
| for item in byte_list: |
| if item < 0: |
| item = item + 256 |
| bs.append(item) |
| |
| str_data = bs.decode('gbk') |
| print(str_data) |
| data_list = [-26, -83, -90, -26, -78, -101, -23, -67, -112] |
| |
| num_list = bytearray() |
| for i in data_list: |
| if i < 0: |
| i = i + 256 |
| num_list.append(i) |
| |
| text = num_list.decode('utf-8') |
| print(text) |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
2019-03-08 python之路day12--装饰器的进阶