VB中如何将字符串转换成16进制并赋值给变量

怎么寄快递2023-04-24  67

可以使用 val("&H" & Text1text) 来转文本框的16进制内容转换成数字,想到得到数字的16进制字符串可以使用hex函数

dim UDS_TXID_P,UDS_RXID

UDS_TXID_P = Val("&H" & Text1text)

UDS_RXID = Val("&H" & Text2text)

'想要以16进制输出,则如下

print hex(UDS_TXID_P)

pritn hex(UDS_RXID)

VB字符串可通过使用StrConv 函数,将字符串由 Unicode 转成系统的缺省码页后,再获取每个字节的十六进制字符后拼接起来。

StrConv 函数,返回按指定类型转换的 Variant (String)。

实现代码:

Private Sub Command1_Click()

    Dim strSj As String

    Dim strHexSj As String

    Dim i As Long

    Dim bytSj() As Byte

    strSj = "123ABC十六进制"

    bytSj = StrConv(strSj, vbFromUnicode)

    For i = 0 To UBound(bytSj)

        strHexSj = strHexSj & Right("0" & Hex(bytSj(i)), 2)

    Next

    DebugPrint strHexSj

End Sub

vbFromUnicode,将字符串由 Unicode 转成系统的缺省码页。

既可以转换单字节字符也可转换双字节字符。

要看你的字符串是怎么写的。

例如: char s[]="07BC3A";

int v;

你可以用 sscanf(s,"%x",&v); 变成整型值,存入 v

你也可以用 strtol 函数, v = strtol(s, NULL, 16); 赋给 v

打印16进制数值: printf("%#x", v);

char m_pData;

memcpy(m_pData, pData, nLength);

m_nLength = nLength;

//char存储到QString里

for (int i = 0; i < m_nLength; i++)

{

bool ok;

QString m_tmp = QString::number(m_pData,16);

//接收字符为0x00,变字符串为00

if (m_tmptoInt(&ok,10) == 0)

{

m_tmp = ("00");

}

//接收字符为0x04,0x07等,补足0

if ((m_tmptoInt(&ok,10) < 10) && (m_tmptoInt(&ok,10) > 0))

{

m_tmp = m_tmpinsert(0, "0");

}

m_exchangeappend(m_tmp);

m_exchangeappend(" ");

m_pData = m_pData + 1;

m_tmpclear();

}

没懂啥意思,可以先将字符串转化为整型,后面有需要了,再将整型转化为16进制的数字

int parseInt = IntegerparseInt("cc", 16);

Systemoutprintln(parseInt);

String hexString = IntegertoHexString(parseInt);

Systemoutprintln(hexString);

过程有些曲折,但是道理很简单,公式如下,

=DEC2HEX(CODE(A2))&DEC2HEX(CODE(MID(A2,2,1)))&DEC2HEX(CODE(MID(A2,3,1)))&DEC2HEX(CODE(MID(A2,4,1)))&DEC2HEX(CODE(MID(A2,5,1)))&DEC2HEX(CODE(MID(A2,6,1)))&DEC2HEX(CODE(MID(A2,7,1)))&DEC2HEX(CODE(MID(A2,8,1)))&DEC2HEX(CODE(MID(A2,9,1)))&DEC2HEX(CODE(MID(A2,10,1)))&DEC2HEX(CODE(MID(A2,11,1)))&DEC2HEX(CODE(MID(A2,12,1)))&DEC2HEX(CODE(MID(A2,13,1)))

下拉即可

16进制与字符串、字节数组之间的转换

在串口通讯过程中,经常要用到 16进制与字符串、字节数组之间的转换

/// <summary>

/// 字符串转16进制字节数组

/// </summary>

/// <param name="hexString"></param>

/// <returns></returns>

private static byte[] strToToHexByte(string hexString)

{

hexString = hexStringReplace(" ", "");

if ((hexStringLength % 2) != 0)

hexString += " ";

byte[] returnBytes = new byte[hexStringLength / 2];

for (int i = 0; i < returnBytesLength; i++)

returnBytes[i] = ConvertToByte(hexStringSubstring(i 2, 2), 16);

return returnBytes;

}

字节数组转16进制字符串

/// <summary>

/// 字节数组转16进制字符串

/// </summary>

/// <param name="bytes"></param>

/// <returns></returns>

public static string byteToHexStr(byte[] bytes)

{

string returnStr = "";

if (bytes != null)

{

for (int i = 0; i < bytesLength; i++)

{

returnStr += bytes[i]ToString("X2");

}

}

return returnStr;

}

从汉字转换到16进制

/// <summary>

/// 从汉字转换到16进制

/// </summary>

/// <param name="s"></param>

/// <param name="charset">编码,如"utf-8","gb2312"</param>

/// <param name="fenge">是否每字符用逗号分隔</param>

/// <returns></returns>

public static string ToHex(string s, string charset, bool fenge)

{

if ((sLength % 2) != 0)

{

s += " ";//空格

//throw new ArgumentException("s is not valid chinese string!");

}

SystemTextEncoding chs = SystemTextEncodingGetEncoding(charset);

byte[] bytes = chsGetBytes(s);

string str = "";

for (int i = 0; i < bytesLength; i++)

{

str += stringFormat("{0:X}", bytes[i]);

if (fenge && (i != bytesLength - 1))

{

str += string

以上就是关于VB中如何将字符串转换成16进制并赋值给变量全部的内容,包括:VB中如何将字符串转换成16进制并赋值给变量、VB 字符串 转为十六进制、怎么把一个字符串转换成16进制数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

转载请注明原文地址:https://juke.outofmemory.cn/read/3652451.html

最新回复(0)