16进制ascii码转化为对应的字符,付ipmitool查询硬件信息

最近工作需要在用ipmitool查询服务器硬件信息。ipmitool查询硬件信息

比如电源,使用命令:

获取PSU0信息:Ipmitool raw 0x3a 0x71 0x00:

获取PSU1信息:Ipmitool raw 0x3a 0x71 0x01:

但是得到的信息是这样的:

完全没有可读性,这些数字是16进制的ascii,平时我们看到的ascii都是10进制的,0—255,这里转化成16进制了。

想要知道对应的信息,刚开始想着要先把16进制转化为10进制,在转化成对应的ascii字符,网上找了之后发现完全没必要。

python中有一个方法:decode ,该 方法允许以指定的编码格式解码字符串。可以这样如图:

这样就能够把16进制转化成ascii了,具体用法百度吧。

另外上面ipmi输出的信息对应表如下:


位置(从0开始)


长度


数据格式


文字描述


实例解析


第0位


1


16进制整数


电源编号


解析前:00

- PSU0

解析后:(01: PSU1)


第2位


1


16进制整数


电源状态


00

-正常


第21-28位


8


字符串(ASCII)


版本


解析前:30 2e 32 35 30 00 00 00

解析后:-0.250


第29-44位


16


字符串(ASCII)


电源型号


44 50 53 2d 31 36 30 30

41 42 2d 37 20 41 00 00

-DPS-1600AB-7 A


61-76


16


字符串(ASCII)


SN序列号


解析前:48 47 41 41 41 34 34 35

30 30 30 30 33 34 00 00

解析后:-HGAA1445000034

时间: 2024-09-30 17:33:02

16进制ascii码转化为对应的字符,付ipmitool查询硬件信息的相关文章

汉字转16进制ASCII码

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace TestConsole { class Program { static void Main(string[] args) { byte[] b = ASCIIEncoding.Default.GetBytes("阿"); foreach (var s in b) { Console.WriteL

10进制转化为16进制以内的转化

进制转化问题十进制转化为其它进制应该是比较简单的问题,就是一个%和/的问题,模之后再除就ok了 1 int a[1000]; 2 char c[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; 3 int main() 4 { 5 int m,n,i,t,k; 6 printf("十进制数:"); 7 scanf("%d",&n); 8 printf("多少进制

ASCII码与16进制的互相转换(表)

所谓的ASCII和16进制都只是概念上的东西,在计算机中通通是二进制 转换应该是输出的转换,同样是一个数,在计算机内存中表示是一样的,只是输出不一样ASCII是针对字符的编码,几乎是键盘上的字符的编码.下面是一张ASCII和16进制的对应表: ASCII与16进制转换 ASCII 16进制 ASCII 16进制 ASCII 16进制 ASCII 16进制 NUL 00H DLE 10H SP 20H 0 30H SOH 01H DC1 11H ! 21H 1 31H STX 02H DC2 12

【python】字符串、16进制等数据处理

最近做一个socket server,需要接收组播报文,并进行分析处理.其中涉及的一个问题是,待发送的报文是字符串形式,类似"hello world". 从wireshark截取的报文看,都是16进制数据,以为必须转为该种类型才能发送,需要转换为16进制字符串,类似"0x\a00x\c30x\b4"等. 但后来发现,直接发送数据也是ok的,应该是数据发送时自己会进行转码. 不了解的时候,网上查了下,发现大家推荐用到的模块是binascii,查看help 几个方法如下

Java中byte与(16进制)字符串的互相转换

java中byte用二进制表示占用8位,而我们知道16进制的每个字符需要用4位二进制位来表示,所以我们就可以把每个byte转换成两个相应的16进制字符,即把byte的高4位和低4位分别转换成相应的16进制字符H和L,并组合起来得到byte转换到16进制字符串的结果new String(H) + new String(L).即byte用十六进制表示只占2位. 同理,相反的转换也是将两个16进制字符转换成一个byte,原理同上. 根据以上原理,我们就可以将byte[] 数组转换为16进制字符串了,当

【转】iOS中16进制转10进制

原文网址:http://www.voidcn.com/blog/u012198553/article/p-4976772.html /// 将十六进制的字符串转化为NSData - (NSData )transStrHexToData:(NSString )strHex { /// bytes索引 NSUInteger j = 0; NSInteger len = strHex.length; if (len % 2 == 1) { /// 若不能被2整除则说明16进制的字符串不满足图片图.特此

16进制和字符串(包括中文)的转换

package XXXX; import java.io.ByteArrayOutputStream; /** * Description  字符串(包含中文)和16进制之间的转换 */ public class CodeChange { /** * 16进制数字字符集 */ private static String hexString="0123456789ABCDEF"; public static void main(String[] args) { System.out.pr

字节流、字符串、16进制字符串转换__Java(转)

Java代码   /** * @Package: * @ClassName:TypeConversion * @Description:字节流.字符串.16进制字符串转换 * @author:xk * @date:Jan 8, 2013 5:00:08 PM */ public class TypeConversion { /** * @Title:bytes2HexString * @Description:字节数组转16进制字符串 * @param b *            字节数组 *

C#字符串和16进制字符串之间的转换

将字符串编码成 16进制 字符串表示: using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Net; namespace ConsoleApplication1{ class Program { static void Main(string[] args) { // 将字符串转换成16进制表示: // 先将字符串转换成 byte 数组: // (1).如果是