51Halcon机器视觉

 找回密码
 会员注册

QQ登录

只需一步,快速开始

扫一扫,微信登录

查看: 197|回复: 1
收起左侧

[资料] C#中string.Compare原理,如何比较大小

[复制链接]
  • TA的每日心情
    点赞
    昨天 22:46
  • 签到天数: 724 天

    连续签到: 2 天

    [LV.9]以坛为家II

    155

    主题

    810

    帖子

    4899

    积分

    Rank: 9

    积分
    4899

    热心会员突出贡献切换助手验证会员最佳新人

    发表于 2020-7-9 18:02:49 | 显示全部楼层 |阅读模式

    51Halcon诚邀您的加入,专注于机器视觉开发与应用技术,我们一直都在努力!

    您需要 登录 才可以下载或查看,没有帐号?会员注册

    x
    1. int n = string.Compare("a", "A");
    2. Console.WriteLine(n);
    复制代码

    我们可以看到n是等于-1的也就是a小于A,但是直观上感觉a应该是A大的,毕竟转换成16进制是0x61肯定比0x41大。
    参数说明如下:
    1. //
    2.         // 摘要:
    3.         //     比较两个指定的 System.String 对象,并返回一个指示二者在排序顺序中的相对位置的整数。
    4.         //
    5.         // 参数:
    6.         //   strA:
    7.         //     要比较的第一个字符串。
    8.         //
    9.         //   strB:
    10.         //     要比较的第二个字符串。
    11.         //
    12.         // 返回结果:
    13.         //     一个 32 位带符号整数,指示两个比较数之间的词法关系。值Condition小于零strA 小于 strB。零strA 等于 strB。大于零strA 大于
    复制代码

    也就是说,如果前面的字符串小于后面字符串就是-1,相等就是0,大于就是1,那么这个比较基准是怎么比较的呢?

    一直以为基于ASCII,但是后面想想应该是基于UNICODE的编码顺序,毕竟字符串范围不仅限于ASCII,但是这里却不是简单的UNICODE顺序,而且基于一套排序算法。
    大家可以在此下载排序权重表(Sorting Weight Tables):
    https://www.microsoft.com/en-us/download/details.aspx?id=10921
    我是win10 2004,所以下载win10版本的,对应文件名为:Windows 10 Sorting Weight Table.txt
    然后我们打开该txt找到我们的字符串“a”和“A”对应的十六进制编码,看看他们的权重:
    微信截图_20200709180105.png
    由此可以看到,虽然十六进制a比A大,但是a的权重却低于A,所以返回-1。


    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情
    开心
    2021-1-7 08:40
  • 签到天数: 278 天

    连续签到: 1 天

    [LV.8]以坛为家I

    0

    主题

    31

    帖子

    401

    积分

    Rank: 2Rank: 2

    积分
    401
    发表于 2020-7-10 08:57:04 | 显示全部楼层
    学习了,谢谢楼主

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

    您需要登录后才可以回帖 会员登录 | 会员注册

    本版积分规则

    建议您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流浏览器浏览本网站

    51Halcon会员技术交流会员技术交流 | 51Halcon官方客服咨询官方客服咨询 | Halcon切换助手使用反馈切换助手使用

    申请友链| 小黑屋| 手机版| Archiver| 有问题需要咨询站长?|  

    CopyRight © 2015-2020 51Halcon机器视觉. Version X3.4.

    粤ICP备15095995号-2 粤公网安备44030602000670号

    快速回复 返回顶部 返回列表