public string ByteToHex(byte[] comByte)
{
StringBuilder stringBuilder = new StringBuilder(comByte.Length * 3);
for (int i = 0; i < comByte.Length; i++)
{
byte value = comByte[i];
stringBuilder.Append(Convert.ToString(value, 16).PadLeft(2, '0').PadRight(3, ' '));
}
return stringBuilder.ToString().ToUpper();
}
请问 以上代码中stringBuilder.Append(Convert.ToString(value, 16).PadLeft(2, '0').PadRight(3, ' '));
1、为什么stringBuilder的Append()方法后还可以带PadLeft()方法,更怪的是PadLeft()方法后还可带PadRight()
2、Convert.ToString(value, 16)的参数中16是什么意思?
3、PadLeft(2, '0') 的参数 2, '0' 是什么意思
4、PadRight(3, ' ') 的参数 3, ' ' 是什么意思
12 个解决方案
#1
1.这并不是Append后面追加的,而是Convert.ToString后面追加的,看括号的位置,PadLeft和PadRight都是string的方法,返回的也是string,所以连续使用没有问题
2.转换成16进制string
3.string左边不足两个字符就以0填充
4.string左边不足三个字符就以空格填充
2.转换成16进制string
3.string左边不足两个字符就以0填充
4.string左边不足三个字符就以空格填充
#2
Convert.ToString(value, 16).PadLeft(2, '0').PadRight(3, ' ')
先 Convert.ToString(value, 16) 将 value 转换成 16进制串
再 PadLeft(2, '0') 补位 2个字节(不足2位,左边加“0”)
最后 PadRight(3, ' ') 右边加个空格
先 Convert.ToString(value, 16) 将 value 转换成 16进制串
再 PadLeft(2, '0') 补位 2个字节(不足2位,左边加“0”)
最后 PadRight(3, ' ') 右边加个空格
#3
其实写作 value.ToString("X2") + " " 就可以了
#4
PadLeft(2, '0'),输出长度2位,如果不足2位,左边补0
长度小于2的字符串,左侧补0,比如1、2、3,输出01、02、03
长度小于2的字符串,左侧补0,比如1、2、3,输出01、02、03
#5
1.PadLeft()方法和PadRight()方法时ToString()方法里的子方法,ToString()方法可以调用这两个方法,PadLeft()方法可以规定字符的宽度并且可以在字符左侧填充自定义的数据,PadRight()方法类似;
2.那个16意思是转换成16进制数据;
3.2:表示字符占两位,宽度为2;"0"表示在宽度为2的字符串里填充数据0,以此达到规定的字符宽度;
4."3"表示在字符的右侧填充宽度为3的数据,也就是3位数据,' ':单引号里有空格,表示以空格填充字符达到指定的字符宽度.
2.那个16意思是转换成16进制数据;
3.2:表示字符占两位,宽度为2;"0"表示在宽度为2的字符串里填充数据0,以此达到规定的字符宽度;
4."3"表示在字符的右侧填充宽度为3的数据,也就是3位数据,' ':单引号里有空格,表示以空格填充字符达到指定的字符宽度.
#6
public string ByteToHex(byte[] comByte)
{
return string.Join(" ", data.Select(d => d.ToString("X2")).ToArray());
}
如果你是第一天的学生的话 鼠标放在单词上面就提示
如果是第二天的学生 可以F12到里面 看到"中文注释".
第三天的学生 基本可以选中一个单词 F1.看帮助文档
第四天更不得了...都会百度msdn了..
所以你是哪位?
#7
PadLeft/Right() 不是谁带不带谁的问题 也不是ToString()的儿子 而是string类型里面的一个函数 而你上面的ToString什么的返回的都是string类型 所以没什么好说的了。。。
#8
非常 感谢,你是说 Append() PadLeft() PadRight() 这三个函数不是从属关系,是平等的关系? 但是这儿的点号(.)不是明确表示了点号右边的函数是点号左边函数的子函数或子方法吗,在这儿如何理解这个点号 ,哪儿有这个 点号作用的详细 说明 ? 非常 感谢。
#9
非常 感谢,你是说 Append() PadLeft() PadRight() 这三个函数不是从属关系,是平等的关系? 但是这儿的点号(.)不是明确表示了点号右边的函数是点号左边函数的子函数或子方法吗,在这儿如何理解这个点号 ,哪儿有这个 点号作用的详细 说明 ? 非常 感谢。
#10
非常 感谢,你是说 Append() PadLeft() PadRight() 这三个函数不是从属关系,是平等的关系? 但是这儿的点号(.)不是明确表示了点号右边的函数是点号左边函数的子函数或子方法吗,在这儿如何理解这个点号 ,哪儿有这个 点号作用的详细 说明 ? 非常 感谢。
#11
这行代码分开来写的话,我估计你就不会有任何问题,现在只不过是连在一起写了而已
string tmp = Convert.ToString(value, 16);
tmp = tmp.PadLeft(2, '0');
tmp = tmp.PadRight(3, ' ');
#12
PadLeft() PadRight() 都是 string 的方法
#1
1.这并不是Append后面追加的,而是Convert.ToString后面追加的,看括号的位置,PadLeft和PadRight都是string的方法,返回的也是string,所以连续使用没有问题
2.转换成16进制string
3.string左边不足两个字符就以0填充
4.string左边不足三个字符就以空格填充
2.转换成16进制string
3.string左边不足两个字符就以0填充
4.string左边不足三个字符就以空格填充
#2
Convert.ToString(value, 16).PadLeft(2, '0').PadRight(3, ' ')
先 Convert.ToString(value, 16) 将 value 转换成 16进制串
再 PadLeft(2, '0') 补位 2个字节(不足2位,左边加“0”)
最后 PadRight(3, ' ') 右边加个空格
先 Convert.ToString(value, 16) 将 value 转换成 16进制串
再 PadLeft(2, '0') 补位 2个字节(不足2位,左边加“0”)
最后 PadRight(3, ' ') 右边加个空格
#3
其实写作 value.ToString("X2") + " " 就可以了
#4
PadLeft(2, '0'),输出长度2位,如果不足2位,左边补0
长度小于2的字符串,左侧补0,比如1、2、3,输出01、02、03
长度小于2的字符串,左侧补0,比如1、2、3,输出01、02、03
#5
1.PadLeft()方法和PadRight()方法时ToString()方法里的子方法,ToString()方法可以调用这两个方法,PadLeft()方法可以规定字符的宽度并且可以在字符左侧填充自定义的数据,PadRight()方法类似;
2.那个16意思是转换成16进制数据;
3.2:表示字符占两位,宽度为2;"0"表示在宽度为2的字符串里填充数据0,以此达到规定的字符宽度;
4."3"表示在字符的右侧填充宽度为3的数据,也就是3位数据,' ':单引号里有空格,表示以空格填充字符达到指定的字符宽度.
2.那个16意思是转换成16进制数据;
3.2:表示字符占两位,宽度为2;"0"表示在宽度为2的字符串里填充数据0,以此达到规定的字符宽度;
4."3"表示在字符的右侧填充宽度为3的数据,也就是3位数据,' ':单引号里有空格,表示以空格填充字符达到指定的字符宽度.
#6
public string ByteToHex(byte[] comByte)
{
return string.Join(" ", data.Select(d => d.ToString("X2")).ToArray());
}
如果你是第一天的学生的话 鼠标放在单词上面就提示
如果是第二天的学生 可以F12到里面 看到"中文注释".
第三天的学生 基本可以选中一个单词 F1.看帮助文档
第四天更不得了...都会百度msdn了..
所以你是哪位?
#7
PadLeft/Right() 不是谁带不带谁的问题 也不是ToString()的儿子 而是string类型里面的一个函数 而你上面的ToString什么的返回的都是string类型 所以没什么好说的了。。。
#8
非常 感谢,你是说 Append() PadLeft() PadRight() 这三个函数不是从属关系,是平等的关系? 但是这儿的点号(.)不是明确表示了点号右边的函数是点号左边函数的子函数或子方法吗,在这儿如何理解这个点号 ,哪儿有这个 点号作用的详细 说明 ? 非常 感谢。
#9
非常 感谢,你是说 Append() PadLeft() PadRight() 这三个函数不是从属关系,是平等的关系? 但是这儿的点号(.)不是明确表示了点号右边的函数是点号左边函数的子函数或子方法吗,在这儿如何理解这个点号 ,哪儿有这个 点号作用的详细 说明 ? 非常 感谢。
#10
非常 感谢,你是说 Append() PadLeft() PadRight() 这三个函数不是从属关系,是平等的关系? 但是这儿的点号(.)不是明确表示了点号右边的函数是点号左边函数的子函数或子方法吗,在这儿如何理解这个点号 ,哪儿有这个 点号作用的详细 说明 ? 非常 感谢。
#11
这行代码分开来写的话,我估计你就不会有任何问题,现在只不过是连在一起写了而已
string tmp = Convert.ToString(value, 16);
tmp = tmp.PadLeft(2, '0');
tmp = tmp.PadRight(3, ' ');
#12
PadLeft() PadRight() 都是 string 的方法