十六进制String转byte[]
时间: 2023-03-30 22:03:51 浏览: 105
可以使用以下代码将十六进制String转换为byte数组:
```java
public static byte[] hexStringToByteArray(String hexString) {
int len = hexString.length();
byte[] byteArray = new byte[len / 2];
for (int i = ; i < len; i += 2) {
byteArray[i / 2] = (byte) ((Character.digit(hexString.charAt(i), 16) << 4)
+ Character.digit(hexString.charAt(i+1), 16));
}
return byteArray;
}
```
其中,hexString是要转换的十六进制字符串。
相关问题
c#十进制转十六进制并存入byte
在C#中,你可以通过`BitConverter`类将十进制转换为十六进制,并将其存储到`Byte`类型。以下是一个示例:
```csharp
using System;
using System.Runtime.InteropServices;
public class Program
{
public static void Main()
{
// 十进制数
decimal decimalValue = 12345;
// 将十进制转换为二进制字节
byte[] bytes = BitConverter.GetBytes(decimalValue);
// 二进制字节通常包含四个字节,我们可以选择取前两个字节作为16进制值
byte firstByte = bytes[0];
byte secondByte = bytes[1];
// 转换为十六进制字符串
string hexFirstByte = Convert.ToHexString(firstByte);
string hexSecondByte = Convert.ToHexString(secondByte);
// 输出结果
Console.WriteLine($"First byte in hexadecimal: {hexFirstByte}");
Console.WriteLine($"Second byte in hexadecimal: {hexSecondByte}");
// 如果只关心前两位十六进制,可以组合成一个短的十六进制表示
string shortHex = $"{hexFirstByte}{hexSecondByte}";
Console.WriteLine($"Combined as a short hexadecimal value: {shortHex}");
}
}
```
c# 把string数组转十六进制数的byte数组
在C#中,将字符串数组转换为十六进制字节数组可以分为两步:首先,需要将每个字符串元素解析为十六进制数字,然后将它们合并成一个完整的字节数组。这里有一个简单的示例:
```csharp
using System;
using System.Text;
public static byte[] StringArrayToHexByteArray(string[] hexStrings)
{
if (hexStrings == null || hexStrings.Length == 0)
{
return new byte[0];
}
// 创建StringBuilder用于拼接十六进制字符串
StringBuilder hexBuilder = new StringBuilder();
foreach (string hexString in hexStrings)
{
// 检查字符串是否只包含有效的十六进制字符,并忽略非数字字符
string cleanedHex = RemoveNonHexCharacters(hexString);
hexBuilder.Append(cleanedHex);
}
// 将字符串转换为字节,每两个字符代表一个字节(因为16进制对应4位二进制)
int byteLength = hexBuilder.Length / 2;
char[] hexChars = hexBuilder.ToString().ToCharArray();
byte[] byteArray = new byte[byteLength];
for (int i = 0; i < byteLength; i++)
{
byteArray[i] = Convert.ToByte(hexChars[i * 2], 16); // 取前两个字符作为字节的低四位
if (i < byteLength - 1)
{
byteArray[i] |= Convert.ToByte(hexChars[i * 2 + 1], 16) << 4; // 取后两个字符作为字节的高四位
}
}
return byteArray;
}
// 辅助函数,去除字符串中的非十六进制字符
private static string RemoveNonHexCharacters(string input)
{
return new string(input.Where(c => Char.IsLetterOrDigit(c)).ToArray());
}
```
使用这个方法时,传入一个字符串数组`hexStrings`,它应该包含一系列的十六进制数字(例如:"FF", "AA", "1B")。返回的是一个对应的字节数组。
阅读全文