qt怎样将字符串转化为16进制

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了qt怎样将字符串转化为16进制相关的知识,希望对你有一定的参考价值。

参考技术A

char ConvertHexChar(char ch)

if((ch >= '0') && (ch <= '9'))
return ch-0x30;
else if((ch >= 'A') && (ch <= 'F'))
return ch-'A'+10;
else if((ch >= 'a') && (ch <= 'f'))
return ch-'a'+10;
else return (-1);



QByteArray QString2Hex(QString str)

QByteArray senddata;
int hexdata,lowhexdata;
int hexdatalen = 0;
int len = str.length();
senddata.resize(len/2);
char lstr,hstr;
for(int i=0; i<len; )

hstr=str[i].toLatin1();
if(hstr == ' ')

i++;
continue;

i++;
if(i >= len)
break;
lstr = str[i].toLatin1();
hexdata = ConvertHexChar(hstr);
lowhexdata = ConvertHexChar(lstr);
if((hexdata == 16) || (lowhexdata == 16))
break;
else
hexdata = hexdata*16+lowhexdata;
i++;
senddata[hexdatalen] = (char)hexdata;
hexdatalen++;

senddata.resize(hexdatalen);
return senddata;

返回的QBtyeArray 可直接用串口对像发送

参考技术B QString str = "123";
QByteArray ba;
qDebug()<<ba.appand(str).toHex()<<endl;

Java 将字节转化为16进制字符串

    很多时候我们需要将字节数组转化为16进制字符串来保存,例如做I/O字节流操作的时候,尤其在很多加密的场景中应用都比较广泛。

     Java中byte用二进制表示占用8位,而我们知道16进制的每个字符需要用4位二进制位来表示,所以我们就可以把每个byte转换成两个相应的16进制字符,即把byte的高4位和低4位分别转换成相应的16进制字符H和L,并组合起来得到byte 转换到16进制字符串的结果new String(H) + new String(L)。即byte用十六进制表示只占2位。

    从上面可以看出来我们只需要分别取出高四位和低四位的二进制值,然后进行相应的换算。

    具体方案如下:
    

    /**
     * 0x0F 十六进制F 相当于值 十进制 15,二进制表现形式为 0000 1111 二进制 1 & 任何数是原数 二进制 0 & 任何数是0
     * 
     * @param b
     * @return
     */
    public static String byteToHexString(Byte b) {
        final String HEX = "0123456789abcdef";
        StringBuilder sb = new StringBuilder();
        /**
         * 为什么要与0xof运算 因为0xof的二进制是0000 1111,同时1&运算得出原数,0&运算得出0
         */
        // 1.取出字节b的高四位的数值并追加
        // 把高四位向右移四位,与 0x0f运算得出高四位的数值
        sb.append(HEX.charAt((b >> 4) & 0x0f));
        // 2.取出低四位的值并追加
        // 直接与 0x0f运算得出低四位的数值
        sb.append(HEX.charAt(b & 0x0f));
        return sb.toString();
    }


总结如下:

(1)一个byte 对应两位十六进制位,而不是八位(32位二进制位);

(2)转化为十六进制之后,不足两位的,高位要补零。


本文出自 “王威” 博客,请务必保留此出处http://jaydenwang.blog.51cto.com/6033165/1746161

以上是关于qt怎样将字符串转化为16进制的主要内容,如果未能解决你的问题,请参考以下文章

怎样用C语言将字符转化成十六进制整数

用C语言将16进制数转化为10进制数 16进制数以字符串形式输入 最好运用数组 谢谢

C语言 如何将16进制形式的字符串,转化为相同的16进制的整型?

16进制字符串如何转化16进制数值

Java 将字节转化为16进制字符串

python怎样将16进制转化为2进制