Leetcode: Add Binary (Java) 如何在一个char和一个int之间进行加法?

Leetcode: Add Binary (Java) How can it perform addition between one char and one int?

class Solution {
    public String addBinary(String a, String b) {
        int len1 = a.length() - 1;
        int len2 = b.length() - 1;
        
        int carry = 0;
        
        StringBuilder sb = new StringBuilder();
        
        while (len1 >= 0 || len2 >= 0){
            int sum = carry;
            if (len1 >= 0) sum += a.charAt(len1) - '0';
            if (len2 >= 0) sum += b.charAt(len2) - '0';
            
            sb.append(sum%2);
            carry = sum/2;
    
            len1--;
            len2--;
        
        }
        if(carry != 0) sb.append(carry);
        return sb.reverse().toString(); 
    }
}

显然,这段代码适用于解决方案,我只是很难理解这个问题。对于这一行:

sum += a.charAt(len1) - '0';

sum 是一个整数,a.charAt(len1) returns 是一个字符,它如何在整数和字符之间进行加法?另外,“0”是什么意思?

chars 本质上是更小的整数,带有与之相关的精美打印。一个char其实就是保存了一个特定字符的unicode编码,可以当做一个整数来进行加减运算。一个巧妙的事情是代表数字的字符是连续的(“0”后跟“1”,再后跟“2”,等等)。因此,如果您从一个字符中减去“0”(即“字符 0 的 unicode 代码”),您将得到它代表的实际数字。