我正在将脚本从C迁移到PHP(http://svn.stellman-greene.com/mgrs_to_utm/trunk/),我在mgrs_to_utm.c中遇到了这个概念的问题:
Letters[0] = (toupper(MGRS[j]) - (long)'A');
if ((Letters[0] == LETTER_I) || (Letters[0] == LETTER_O))
MGRS[j]
是字符串的一部分,但WTF我可以将(long)'A'
减去LETTER
??
LETTER_I
是一个整数(在mgrs_to_utm.h中定义)。
我记得PHP,我找不到这个操作的逻辑。
非常感谢您的帮助:)
答案 0 :(得分:3)
在ASCII中,字符“A”的值为65,因此Letters [0]实际上包含字母表中的偏移量(A为0)。
如果MGRS [j]是'I'(73)那么我们从它拿'A'(65)离开8
A B C D E F G H I J K... 0 1 2 3 4 5 6 7 8 9 10
代码几乎与:
if ( MGRS[j] == 'I' || MGRS[j] == 'O' || MGRS[j] == 'i' || MGRS[j] == 'o')