51Halcon机器视觉

 找回密码
 会员注册

QQ登录

只需一步,快速开始

扫一扫,微信登录

查看: 98|回复: 1

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

[复制链接]
  • TA的每日心情
    萌萌
    昨天 10:34
  • 签到天数: 638 天

    连续签到: 1 天

    [LV.9]以坛为家II

    142

    主题

    725

    帖子

    4198

    积分

    Rank: 9

    积分
    4198

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

    发表于 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的每日心情
    点赞
    昨天 10:44
  • 签到天数: 206 天

    连续签到: 1 天

    [LV.7]常住居民III

    0

    主题

    30

    帖子

    314

    积分

    Rank: 2Rank: 2

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

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

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

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

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

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

    本版积分规则

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

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

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

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

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