如何将string格式的有0x开头的16进制整数转换为byte的格式? 比如 string a="0x1D"; 如何让byte b的值为0x1D。

姜小飞 2019-01-14 03:40:23
如何将string格式的有0x开头的16进制整数转换为byte的格式?

比如
string a="0x1D";
如何让byte b的值为0x1D。


也就是说加入定义一个string a="0x1d";
如何转换为 byte b也等于0x1d;
一定要有0x开头。

谢谢高手了!
...全文
1694 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
a410787073 2019-01-18
  • 打赏
  • 举报
回复
「已注销」 2019-01-17
  • 打赏
  • 举报
回复
我看楼主只是想把字符串简单的转换为 byte 数组,而不是进行值转换。
比如 string s = "0x1D", 则转换为 byte[] a = { '0', 'x', '1', 'D' } 这样的数组。
rsjd_hifi 2019-01-17
  • 打赏
  • 举报
回复
一看就知道楼主是作来PLC的上位机,直接问一句话当然不行咯,要做一个小函数。
ty104_007 2019-01-16
  • 打赏
  • 举报
回复
b= System.Text.Encoding.Default.GetBytes(a);
ZHANGYONGQIANG12 2019-01-16
  • 打赏
  • 举报
回复
,进来听课的 ,请大神们开始讨论
qq_41160384 2019-01-16
  • 打赏
  • 举报
回复
不知道没试过
dceacho 2019-01-16
  • 打赏
  • 举报
回复
对写底层的来说这都不是事
loveljy_19901114 2019-01-15
  • 打赏
  • 举报
回复
这个要转换的话就得自己写方法了,把0x1D里面的1乘以16,再加上D代表的13, 先int.tryParse,返回false的话说明是a~f,再转为对应的10~15 至于你说的在b前面加0x就不知道什么意思了
liusa1997 2019-01-15
  • 打赏
  • 举报
回复
你所指的0X1D什么的,大家都说了,那是以16进制标记的整数,byte 它叫字节,存放的一个信息的大小,是不可能将字符串原样存放进byte里面的,你存放的只有字符串转换后的大小放进去,你以后会遇到图片,图片转成字节组放进byte[]里面,然后你断点看,你会发现byte[]里面没有任何字母,全是数字,因为这就是基础的理解了,一切信息电脑都是以0,1为主,所以那些数字按照不同顺序就能构成一张图
qq_44538191 2019-01-15
  • 打赏
  • 举报
回复
string hex =a.Replace("0x","");

int b = int.Parse(hex, System.Globalization.NumberStyles.HexNumber);
ilikeff8 2019-01-15
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
高手也做不到,你让微软项目组把byte数据去改改大概可行,现在的byte是只能存0到255的整数的
schlafenhamster 2019-01-15
  • 打赏
  • 举报
回复

//////////////////////////////////////////////
BYTE HexValue(BYTE a)
{
a -= 48;// '0' 0x30
if(a >32) a -=32;// 'a' 0x61
if(a > 9 ) a -= 7;// 'A' 0x41
return a;
}
//
BYTE Hex2Bytes(BYTE s[2])
{
BYTE v=0;
for(int ii=0 ;ii<2; ii++)
{
v <<=4;
v += HexValue(s[ii]);
}
return v;
}
lvgrey 2019-01-15
  • 打赏
  • 举报
回复
UInt16就可以了
assky124 2019-01-15
  • 打赏
  • 举报
回复
直接转成 UInt16不就行了
橘子皮... 2019-01-14
  • 打赏
  • 举报
回复
dim bytes(0) as byte bytes(0)=&H1d
平底锅锅锅 2019-01-14
  • 打赏
  • 举报
回复
byte不可能是0x,0x是十六进制的意思。b可以是1*16+D的整数。其实就是0x1D。int.Parse或者TryParse转
xuzuning 2019-01-14
  • 打赏
  • 举报
回复
byte b = new byte[] { Convert.ToByte(“0xE3", 16) }; 你可以看到 b[0] 的值是 227 十六进制的 E3 就是十进制的 227,没有什么可疑惑的 而你说的 一定要有0x开头,这是做不到的,除非自己拼接字符串
姜小飞 2019-01-14
  • 打赏
  • 举报
回复
可以详细点吗,最好有代码说明啊
  • 打赏
  • 举报
回复
0x移除……后面两位才是byte数据 判断下是否0x开头,是的话截取后2位,否则截取前2位,再转byte不困难吧
加载更多回复(5)

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧