怎么把汉字转换成16进制?

怎么把汉字转换成16进制?,第1张

先把字符串转成byte数组,\x0d\x0a再把byte数组中的每个元素以16进制形式的字符串保存到字符串数组中,\x0d\x0a再根据字符串数组中的每个元素转换回byte数组,\x0d\x0a再根据byte数组生成字符串\x0d\x0a\x0d\x0astring str = "你好"\x0d\x0abyte[] bytes = Encoding.Unicode.GetBytes(str)\x0d\x0astring[] strArr = new string[bytes.Length]\x0d\x0aConsole.WriteLine("16进制显示'你好':")\x0d\x0afor (i = 0i 回答于 2022-12-24

字符类型是整型类型的一种,将其转换成int类型,然后再输出十六进制形式即可。下面是一个示例程序。

#include <iostream>

using namespace std

int main()

{  

char str_test[] = "hello world\n"

int limit = strlen(str_test)

for (int inx=0 inx!=limit ++inx) 

//用static_cast将字符类型转成int类型

cout<<str_test[inx]<<"---hex:"<<hex<<static_cast<int>(str_test[inx])<<"\t"

cout<<endl

return 0

}

程序执行结果:

一.根据byte的二进制值,分别取高低的四位转换成16进制字符

String str = "我"

byte[] ba

try {

ba = str.getBytes("UTF-16")

char[] ca = "0123456789abcdef".toCharArray()

StringBuffer sb

for (byte b : ba) {

sb = new StringBuffer()

int bi = (b &0xf0) >>4

sb.append(ca[bi])

int bi2 = b &0x0f

sb.append(ca[bi2])

System.out.println(sb)

}

} catch (UnsupportedEncodingException e) {

e.printStackTrace()

}

二.直接调用Integer.toHexString()方法,然后再截取后两位

String strSource = "我"

try {

byte[] ba = strSource.getBytes("UTF-16")

String str//

for (byte b : ba) {

if (b == 0) {

str = "0x00"

} else if (b == -1) {

str = "0xFF"

} else {

// 将int类型数字转换成‘16进制’格式的字符串

str = Integer.toHexString(b).toUpperCase()

if (str.length() >2) {// 此时为‘负数’

// 截取‘16进制格式字符串’的最后两位字符

str = str.substring(str.length() - 2)

}

str = "0x" + str

}

System.out.println(str)

}

} catch (UnsupportedEncodingException e) {

e.printStackTrace()

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6069439.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-13
下一篇 2023-03-13

发表评论

登录后才能评论

评论列表(0条)

保存