C# byte[] 16进制
例如byte[]strstr[0]的值是3str[1]的值是15str[2]的值是0我要的结果是str[0]的值是03str[1]的值是0Fstr[2]的值是00需要怎么...
例如 byte[] str
str[0] 的值是 3
str[1] 的值是 15
str[2] 的值是 0
我要的结果是
str[0] 的值是 03
str[1] 的值是 0F
str[2] 的值是 00
需要怎么转换?
补充 下 我要返回一个 16进制 byte[]数组 因为这个数组需要发送到 一个指定的socket客户端
10进制的 发过去 客户端无法识别 只能 16进制的 byte[]数组 ,不要说客户端可以改什么的...如果可以改 我就不在这问这个问题了.... 展开
str[0] 的值是 3
str[1] 的值是 15
str[2] 的值是 0
我要的结果是
str[0] 的值是 03
str[1] 的值是 0F
str[2] 的值是 00
需要怎么转换?
补充 下 我要返回一个 16进制 byte[]数组 因为这个数组需要发送到 一个指定的socket客户端
10进制的 发过去 客户端无法识别 只能 16进制的 byte[]数组 ,不要说客户端可以改什么的...如果可以改 我就不在这问这个问题了.... 展开
5个回答
展开全部
看到四级的在批六级的,想笑,站在别人肩膀上的确是容易被选成最佳答案的,但做事不应该这样做的!
object.ToString()在不同的对象中均有实现!
int.ToString()进行了重载,如果不懂可以去查看Convert.ToString(int32)及Convert.ToString(int32,IP)两个实现。
任何一个类型均有ToString()的。也均有重载。
int.ToString()就是可以将数字返回成字符串。如果int.ToString("X")可以返回十六进制的,其中"X"参数必须为大写时返回大写,如果是小写时则返回小写,如果不带参数则返回10进制字符串。
int s = 12;
s.ToString("X") 返回的是"C";
s.ToString("x")返回的是"c";
s.ToString()返回的是"12";
而byte其实也是一种数字!
byte s = 12;同上结果一样的!
但是byte[] s = {0x12,0x03};
s.ToString()返回的是"System.Byte[]"类型名。
所以必须要单个进行执行的。如使用lambda表达式。
我其实也不想回答这个问题的,因为太初级。我答的原因就是某些人想站在别人的肩膀上,你必须得站对了才行啊!拿个Java糊弄谁去?
////////////////////////////////////////////////////////////////////////////////////////////////
算了,直接告诉你答案吧:不需要任何转换!谢谢!
byte[] str = new byte[]{3,15,0};
与
byte[] str = new byte[]{0x03,0x0F,0x00};
这两个没有任何区别的!
byte[]就是byte[],转变用来干什么?
str[0].ToString();该结果是3;
str[0].ToString("X")该结果是3;
str[0].ToString("X2")该结果是03;
也就是说byte就是一个数值,你只管传就行了!
str[0] = 3;
与
str[0] = 0x03;
存储是一样的。只不过是写法不同而已。这根你没有任何的关系的!
str[1] = 15;
str[1]这个byte既是十进制下的15,也是十六进制下的0x0F;还是八进制是的011,其实它就是一个数字。想不通你为什么要让转的。
object.ToString()在不同的对象中均有实现!
int.ToString()进行了重载,如果不懂可以去查看Convert.ToString(int32)及Convert.ToString(int32,IP)两个实现。
任何一个类型均有ToString()的。也均有重载。
int.ToString()就是可以将数字返回成字符串。如果int.ToString("X")可以返回十六进制的,其中"X"参数必须为大写时返回大写,如果是小写时则返回小写,如果不带参数则返回10进制字符串。
int s = 12;
s.ToString("X") 返回的是"C";
s.ToString("x")返回的是"c";
s.ToString()返回的是"12";
而byte其实也是一种数字!
byte s = 12;同上结果一样的!
但是byte[] s = {0x12,0x03};
s.ToString()返回的是"System.Byte[]"类型名。
所以必须要单个进行执行的。如使用lambda表达式。
我其实也不想回答这个问题的,因为太初级。我答的原因就是某些人想站在别人的肩膀上,你必须得站对了才行啊!拿个Java糊弄谁去?
////////////////////////////////////////////////////////////////////////////////////////////////
算了,直接告诉你答案吧:不需要任何转换!谢谢!
byte[] str = new byte[]{3,15,0};
与
byte[] str = new byte[]{0x03,0x0F,0x00};
这两个没有任何区别的!
byte[]就是byte[],转变用来干什么?
str[0].ToString();该结果是3;
str[0].ToString("X")该结果是3;
str[0].ToString("X2")该结果是03;
也就是说byte就是一个数值,你只管传就行了!
str[0] = 3;
与
str[0] = 0x03;
存储是一样的。只不过是写法不同而已。这根你没有任何的关系的!
str[1] = 15;
str[1]这个byte既是十进制下的15,也是十六进制下的0x0F;还是八进制是的011,其实它就是一个数字。想不通你为什么要让转的。
展开全部
这个转换有多种方法,这里举出两个方法
using System;
using System.Collections.Generic;
using System.Text;
namespace ConvertDemo2
{
class Program
{
static void Main(string[] args)
{
byte[] str = new byte[] { 3, 15, 0};
//第一种方法
string str2 = BitConverter.ToString(str);
//由于用BitConverter.ToString()方法转换的结果
//每个数据之间会用-间隔,所以需要进一步处理
str2 = str2.Replace("-", "");
Console.WriteLine(str2);
//这里是第二种方法
StringBuilder sb = new StringBuilder();
foreach (byte b in str) {
//这里之所以用X2 是因为 如果用 X 一个字节是单位数
//将不会输出前面的0
sb.Append(b.ToString("X2"));
}
Console.WriteLine(sb.ToString());
Console.ReadKey();
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int i = 123;
string s = i.ToString("X"); //转16进制
给你个转16进制的方法吧
追问
转换出来的都是 字符串了 怎么弄成 16进制的数组
追答
byte[] str = { 3, 15, 0 };//;str[0] 的值是 3str[1] 的值是 15str[2] 的值是 0
string a = "";
for (int i = 0; i < str.Length; i++)
{
a+= str[i].ToString("X2");
}
先得到字符串
private byte[] StringToHex(string s)
{
s = s.Replace(" ", "");
if ((s.Length % 2) != 0)
{
s += "";
}
byte[] bytes = new byte[s.Length / 2];
for (int i = 0; i < bytes.Length; i++)
{
bytes[i] = Convert.ToByte(s.Substring(i * 2, 2), 16);
}
return bytes;
}
调用上面的方法,你试一下看行不行
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
ToString("X")方法可以直接转换成16进制
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
sorry,没看清楚,还以为是java中呢,就当我没说
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询