把十六进制字符串转换成字节型

作者&投稿:豫谭 (若有异议请与网页底部的电邮联系)
求教String转换为byte类型十六进制数,在线等~

/**
* 字符串转换成十六进制字符串
* @param String str 待转换的ASCII字符串
* @return String 每个Byte之间空格分隔,如: [61 6C 6B]
*/
public static String str2HexStr(String str)
{

char[] chars = "0123456789ABCDEF".toCharArray();
StringBuilder sb = new StringBuilder("");
byte[] bs = str.getBytes();
int bit;

for (int i = 0; i < bs.length; i++)
{
bit = (bs[i] & 0x0f0) >> 4;
sb.append(chars[bit]);
bit = bs[i] & 0x0f;
sb.append(chars[bit]);
sb.append(' ');
}
return sb.toString().trim();
}

/**
* 十六进制转换字符串
* @param String str Byte字符串(Byte之间无分隔符 如:[616C6B])
* @return String 对应的字符串
*/
public static String hexStr2Str(String hexStr)
{
String str = "0123456789ABCDEF";
char[] hexs = hexStr.toCharArray();
byte[] bytes = new byte[hexStr.length() / 2];
int n;

for (int i = 0; i < bytes.length; i++)
{
n = str.indexOf(hexs[2 * i]) * 16;
n += str.indexOf(hexs[2 * i + 1]);
bytes[i] = (byte) (n & 0xff);
}
return new String(bytes);
}

/**
* bytes转换成十六进制字符串
* @param byte[] b byte数组
* @return String 每个Byte值之间空格分隔
*/
public static String byte2HexStr(byte[] b)
{
String stmp="";
StringBuilder sb = new StringBuilder("");
for (int n=0;n<b.length;n++)
{
stmp = Integer.toHexString(b[n] & 0xFF);
sb.append((stmp.length()==1)? "0"+stmp : stmp);
sb.append(" ");
}
return sb.toString().toUpperCase().trim();
}

/**
* bytes字符串转换为Byte值
* @param String src Byte字符串,每个Byte之间没有分隔符
* @return byte[]
*/
public static byte[] hexStr2Bytes(String src)
{
int m=0,n=0;
int l=src.length()/2;
System.out.println(l);
byte[] ret = new byte[l];
for (int i = 0; i < l; i++)
{
m=i*2+1;
n=m+1;
ret[i] = Byte.decode("0x" + src.substring(i*2, m) + src.substring(m,n));
}
return ret;
}

/**
* String的字符串转换成unicode的String
* @param String strText 全角字符串
* @return String 每个unicode之间无分隔符
* @throws Exception
*/
public static String strToUnicode(String strText)
throws Exception
{
char c;
StringBuilder str = new StringBuilder();
int intAsc;
String strHex;
for (int i = 0; i < strText.length(); i++)
{
c = strText.charAt(i);
intAsc = (int) c;
strHex = Integer.toHexString(intAsc);
if (intAsc > 128)
str.append("\\u" + strHex);
else // 低位在前面补00
str.append("\\u00" + strHex);
}
return str.toString();
}

/**
* unicode的String转换成String的字符串
* @param String hex 16进制值字符串 (一个unicode为2byte)
* @return String 全角字符串
*/
public static String unicodeToString(String hex)
{
int t = hex.length() / 6;
StringBuilder str = new StringBuilder();
for (int i = 0; i < t; i++)
{
String s = hex.substring(i * 6, (i + 1) * 6);
// 高位需要补上00再转
String s1 = s.substring(2, 4) + "00";
// 低位直接转
String s2 = s.substring(4);
// 将16进制的string转为int
int n = Integer.valueOf(s1, 16) + Integer.valueOf(s2, 16);
// 将int转换为字符
char[] chars = Character.toChars(n);
str.append(new String(chars));
}
return str.toString();
}
/**
* 字符串转换成十六进制字符串
* @param String str 待转换的ASCII字符串
* @return String 每个Byte之间空格分隔,如: [61 6C 6B]
*/
public static String str2HexStr(String str)
{

char[] chars = "0123456789ABCDEF".toCharArray();
StringBuilder sb = new StringBuilder("");
byte[] bs = str.getBytes();
int bit;

for (int i = 0; i < bs.length; i++)
{
bit = (bs[i] & 0x0f0) >> 4;
sb.append(chars[bit]);
bit = bs[i] & 0x0f;
sb.append(chars[bit]);
sb.append(' ');
}
return sb.toString().trim();
}

/**
* 十六进制转换字符串
* @param String str Byte字符串(Byte之间无分隔符 如:[616C6B])
* @return String 对应的字符串
*/
public static String hexStr2Str(String hexStr)
{
String str = "0123456789ABCDEF";
char[] hexs = hexStr.toCharArray();
byte[] bytes = new byte[hexStr.length() / 2];
int n;

for (int i = 0; i < bytes.length; i++)
{
n = str.indexOf(hexs[2 * i]) * 16;
n += str.indexOf(hexs[2 * i + 1]);
bytes[i] = (byte) (n & 0xff);
}
return new String(bytes);
}

/**
* bytes转换成十六进制字符串
* @param byte[] b byte数组
* @return String 每个Byte值之间空格分隔
*/
public static String byte2HexStr(byte[] b)
{
String stmp="";
StringBuilder sb = new StringBuilder("");
for (int n=0;n<b.length;n++)
{
stmp = Integer.toHexString(b[n] & 0xFF);
sb.append((stmp.length()==1)? "0"+stmp : stmp);
sb.append(" ");
}
return sb.toString().toUpperCase().trim();
}

/**
* bytes字符串转换为Byte值
* @param String src Byte字符串,每个Byte之间没有分隔符
* @return byte[]
*/
public static byte[] hexStr2Bytes(String src)
{
int m=0,n=0;
int l=src.length()/2;
System.out.println(l);
byte[] ret = new byte[l];
for (int i = 0; i < l; i++)
{
m=i*2+1;
n=m+1;
ret[i] = Byte.decode("0x" + src.substring(i*2, m) + src.substring(m,n));
}
return ret;
}

/**
* String的字符串转换成unicode的String
* @param String strText 全角字符串
* @return String 每个unicode之间无分隔符
* @throws Exception
*/
public static String strToUnicode(String strText)
throws Exception
{
char c;
StringBuilder str = new StringBuilder();
int intAsc;
String strHex;
for (int i = 0; i < strText.length(); i++)
{
c = strText.charAt(i);
intAsc = (int) c;
strHex = Integer.toHexString(intAsc);
if (intAsc > 128)
str.append("\\u" + strHex);
else // 低位在前面补00
str.append("\\u00" + strHex);
}
return str.toString();
}

/**
* unicode的String转换成String的字符串
* @param String hex 16进制值字符串 (一个unicode为2byte)
* @return String 全角字符串
*/
public static String unicodeToString(String hex)
{
int t = hex.length() / 6;
StringBuilder str = new StringBuilder();
for (int i = 0; i < t; i++)
{
String s = hex.substring(i * 6, (i + 1) * 6);
// 高位需要补上00再转
String s1 = s.substring(2, 4) + "00";
// 低位直接转
String s2 = s.substring(4);
// 将16进制的string转为int
int n = Integer.valueOf(s1, 16) + Integer.valueOf(s2, 16);
// 将int转换为字符
char[] chars = Character.toChars(n);
str.append(new String(chars));
}
return str.toString();
}

#include int Change(char s[],char bits[]) {int i,n = 0;for(i = 0; s[i]; i += 2) {if(s[i] >= 'A' && s[i] = 'A' && s[i + 1] <= 'F')bits[n] = (bits[n] << 4) | (s[i + 1] - 'A' + 10);else bits[n] = (bits[n] << 4) | (s[i + 1] - '0');++n;}return n;}int main(void) {char s[] = "E4F1C3A81F";char bits[10];int i,n = Change(s,bits);printf ("%s
",s);for(i = 0;i < n;i++)printf ("%X ",0XFF & bits[i]);printf("
");return 0;}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace 十六进制字符串转换为字节数组
{
public class HexstringtoByte
{
public static byte[] decodeHex(string hex)
{
char[] chars = hex.ToCharArray();
for (int i = 0; i < chars.Length; i++)
{
Console.WriteLine(chars[i]);
}
Console.WriteLine();
byte[] bytes = new byte[chars.Length / 2];
int byteCount = 0;
for (int i = 0; i < chars.Length; i += 2)
{
byte newByte = 0x00;
newByte |= hexCharToByte(chars[i]);
newByte <<= 4;
newByte |= hexCharToByte(chars[i + 1]);
bytes[byteCount] = newByte;
byteCount++;
}
return bytes;
} private static byte hexCharToByte(char ch)
{
switch (ch)
{
case '0': return 0x00;
case '1': return 0x01;
case '2': return 0x02;
case '3': return 0x03;
case '4': return 0x04;
case '5': return 0x05;
case '6': return 0x06;
case '7': return 0x07;
case '8': return 0x08;
case '9': return 0x09;
case 'a': return 0x0A;
case 'b': return 0x0B;
case 'c': return 0x0C;
case 'd': return 0x0D;
case 'e': return 0x0E;
case 'f': return 0x0F;
}
return 0x00;
}
} class Program
{
static void Main(string[] args)
{
string s = "220c04faf8377f58";
byte[] a = HexstringtoByte.decodeHex(s);
for (int i = 0; i < a.Length; i++)
Console.WriteLine(a[i]);
}
}
}

#region 把十六进制字符串转换成字节型和把字节型转换成十六进制字符串
/// <summary>
/// 把字节型转换成十六进制字符串
/// </summary>
/// <param name="InBytes"></param>
/// <returns></returns>
public static string ByteToString(byte[] InBytes)
{
string StringOut = "";
foreach (byte InByte in InBytes)
{
StringOut = StringOut + String.Format("{0:X2} ", InByte);
}
return StringOut;
} /// <summary>
/// 把十六进制字符串转换成字节型
/// </summary>
/// <param name="InString"></param>
/// <returns></returns>
public static byte[] StringToByte(string InString)
{
string[] ByteStrings;
ByteStrings = InString.Split(" ".ToCharArray());
byte[] ByteOut;
ByteOut = new byte[ByteStrings.Length - 1];
for (int i = 0; i == ByteStrings.Length - 1; i++)
{
ByteOut[i] = Convert.ToByte(("0x" + ByteStrings[i]));
}
return ByteOut;
}
#endregion


C语言 十六进制字符串转十进制
include <stdio.h>#include <string.h>void main(){ int i=0,j=0,result=0,index=0,cindex=0; char a[100],b[100],c[4]; gets(a);\/\/输入数据 for(i=0 ; i<strlen(a); i++) { \/*将16进制转换成10进制*\/ if(a[i]>='a' && a[i]<='z') ...

C语言如何把11位16进制字符串转成16进制数?
voidmain(){ char*p="0x1b";char*str;longi=strtol(p,&str,16);printf("%d\\r\\n",i);} \/\/输出值为27 参数base代表采用的进制方式,如base值为10则采用10进制,若base值为16则采用16进制等。当base值为0时则是采用10进制做转换,但遇到如’0x’前置字符则会使用16进制做转换、遇到’0’...

java 中如果将一个十六进制字符串转化成一个ByteBuffer 比如0xFA...
import java.nio.ByteBuffer;public class aa { public static void main(String []args){ String str= "0xFA";\/\/ 创建一个大小为str.length()的字节缓冲区 ByteBuffer bytebuffer=ByteBuffer.allocate(str.length());\/\/ 在这个字节缓冲区中放入我们指定的 字符的字节数组,得到表示指定字符的...

c++怎么把16进制字符串转换成16进制数
include <stdio.h>#include <stdlib.h> void StrToHex(const char lpSrcStr[], unsigned char lpRetBytes[], size_t *lpRetSize){ if (lpSrcStr != NULL && lpRetBytes != NULL && lpRetSize != NULL) { size_t uiLength = strlen(lpSrcStr); if (uiLength % 2 == ...

...英文、数字,那请问怎样转为对应的16进制数据?
常见的GB2312、UTF8等,都是不相同的字符编码。回答问题 将字符串转换到16进制,只要先制定一个字符编码转化为byte[]。下面实例使用UTF8转换:byte[] data = System.Text.Encoding.UTF8.GetBytes("中文English0123456789"); 然后将byte[]转换为十六进制表示即可。.NET只提供了byte到16进制的方法...

把十六进制字符串转换成字节型
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace 十六进制字符串转换为字节数组 { public class HexstringtoByte { public static byte[] decodeHex(string hex){ char[] chars = hex.ToCharArray();for (int i = 0; i < chars.Length; i++){ Con...

16进制转换成字符串
private static String hexString = "0123456789ABCDEF";public static void main(String[] args) { System.out.println(encode("中文"));System.out.println(decode(encode("中文")));} \/ 将字符串编码成16进制数字,适用于所有字符(包括中文)\/ public static String encode(String str) { \/\/ ...

labview浮点数转换为16进制字节
更实用的方法是直接利用LabVIEW的数据类型转换和字节操作函数。例如,可以使用“强制类型转换”或“数值至十六进制字符串”函数,但这些函数可能不直接生成字节数组。因此,可能需要结合使用多个函数来达到目的。3. 具体步骤:- 首先,使用“强制类型转换”将浮点数转换为32位...

如何将字符串转换为16进制数值
举个例子:233转变成e9 233\/16 = 14 余数为9 14的十六进制为e,9的十六进制还是9,所以转换结果为e9.也就是说:如果相除的结果小于1,则结果是多少就直接转换 如果结果在1和15之间,则转换后的结果如本例所示.依此类推.再举个例子:143转变成e9 143\/16 = 8 余数为15 8的十六进制还是8,15的...

C语言中十六进制字符数组转化为字符串
include <stdio.h> unsigned char s_des[100] = {0};int length = 9;unsigned char s_src[length] = {0xFE,0x01,0x52,0xFF,0xEF,0xBA,0x35,0x90,0xFA};unsigned char IntToHexChar(unsigned char c){ if (c > 9)return (c + 55);else return (c + 0x30);} int main...

屯留县17716068744: 把十六进制字符串转换成字节型 -
邲马贞芪: using System; using System.Collections.Generic; using System.Linq; using System.Text;namespace 十六进制字符串转换为字节数组 { public class HexstringtoByte { public static byte[] decodeHex(string hex) { char[] chars = hex.ToCharArray(); for (...

屯留县17716068744: 把十六进制字符串转换成字节型
邲马贞芪:#region 把十六进制字符串转换成字节型和把字节型转换成十六进制字符串 /// <summary> /// 把字节型转换成十六进制字符串 /// </summary> /// <param name="InBytes"></param> /// <returns></returns> public static string ByteToString(byte[] ...

屯留县17716068744: C语言把16进制字符串转换成字节数组 -
邲马贞芪: 1234567891011121314151617181920212223242526 #include <stdio.h> intChange(chars[],charbits[]) { inti,n = 0; for(i = 0; s[i]; i += 2) { if(s[i] >= 'A'&& s[i] <= 'F') bits[n] = s[i] - 'A'+ 10; elsebits[n] = s[i] - '0'; if(s[i + 1] >= 'A'&& s[i + 1] <= 'F') bits[n] = (...

屯留县17716068744: java 十六进制字符串 转 字节数组 -
邲马贞芪: public static void main(String args[]){String myvalue = "A18F";int valueint = Integer.parseInt(myvalue,16);String bivalue = Integer.toBinaryString(valueint);System.out.print(bivalue);int valuebiint = Integer.parseInt(bivalue,2);System.out.print(Integer.toHexString(valuebiint));}

屯留县17716068744: 16进制如何转换成字节集,然后写入程序 -
邲马贞芪: 子程序 取十进制, 整数型, , 将非十进制的标准格式文本转换成十进制整数值 .参数 欲转换的值, 文本型, , 欲转换的值,文本型!

屯留县17716068744: 怎样把十六进制数据转字节集 -
邲马贞芪: 子程序 取十进制, 整数型, , 将非十进制的标准格式文本转换成十进制整数值 .参数 欲转换的值, 文本型, , 欲转换的值,文本型! .参数 数值类型, 整数型, 可空, 0,#十六进制;1,#十进制(默认);2,#八进制;3,#二进制 .局部变...

屯留县17716068744: 如何将16进制字符串转换成byte型
邲马贞芪: 你的意思是对S中的每一个英文字符使用一个byte来保存这个英文字符的ASCII码吗?那就这样来实现: byte[] b = Encoding.ASCII.GetBytes(s); 还是将字符串转成整形,再放到一个byte里面 那就这样: byte b = Convert.ToByte(s, 16); "问题补充:我要的是byte b=0x41,0x开关的就是16进制 ,一楼的方法把它变成65了,我要的是0x41!" 你这个是什么意思啊,byte是一个字节,0x41的值本来就是65啊,保存在内存中也是以65的的二进制01000001来保存,你需要0x41是什么意思

屯留县17716068744: 16进制字符串如何转化16进制数值 -
邲马贞芪: 将字符串先转换为字节流,再对每个字节转换为16进制的双字节字符,不到两字节前补0,然后拼接成十六进制长字符串.

屯留县17716068744: 字符串表示的十六进制数据转化为相应的字节串VB问题
邲马贞芪: a是输入的字符串.b是输出从1开始存起.i是循环量. For i = 1 To Len(a) Step 2 b((i + 1) / 2) = Val("&H" + a) Next

屯留县17716068744: c#16进制string转成int -
邲马贞芪: 这个…… 一般是先吧string 转成 chararray,然后再 to char ,也就是说要先转到数组,然后再一个一个的转.转成 int32 的话, 你用 Int32.Parse 函数试试

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网