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[]数组 ,不要说客户端可以改什么的...如果可以改 我就不在这问这个问题了....
展开
 我来答
百度网友66a8d48e5
2013-05-10 · TA获得超过7687个赞
知道大有可为答主
回答量:3002
采纳率:12%
帮助的人:3889万
展开全部
看到四级的在批六级的,想笑,站在别人肩膀上的确是容易被选成最佳答案的,但做事不应该这样做的!

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,其实它就是一个数字。想不通你为什么要让转的。
yinfengnong
2013-05-10 · TA获得超过5619个赞
知道大有可为答主
回答量:2344
采纳率:89%
帮助的人:2289万
展开全部

这个转换有多种方法,这里举出两个方法

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();
        }
    }
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
精神小伙喵
2013-05-09 · TA获得超过684个赞
知道小有建树答主
回答量:746
采纳率:50%
帮助的人:726万
展开全部
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;
}

调用上面的方法,你试一下看行不行

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
skyuni_ding
2013-05-10 · 超过24用户采纳过TA的回答
知道答主
回答量:79
采纳率:0%
帮助的人:71万
展开全部
ToString("X")方法可以直接转换成16进制
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Onewarden
2013-05-10 · TA获得超过327个赞
知道小有建树答主
回答量:145
采纳率:100%
帮助的人:142万
展开全部
sorry,没看清楚,还以为是java中呢,就当我没说
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式