gpt4 book ai didi

c# - 为什么这段处理时间戳的代码使用有符号整数?

转载 作者:太空宇宙 更新时间:2023-11-04 14:14:04 24 4
gpt4 key购买 nike

Here's a piece of code for obtaining the time when a .NET assembly was built .请注意这一行:

int secondsSince1970 = System.BitConverter.ToInt32(b, i + c_LinkerTimestampOffset);

此代码提取 IMAGE_FILE_HEADERTimeDateStamp 成员存储在程序集内的结构。结构定义如下:

typedef struct _IMAGE_FILE_HEADER {
WORD Machine;
WORD NumberOfSections;
DWORD TimeDateStamp;
DWORD PointerToSymbolTable;
DWORD NumberOfSymbols;
WORD SizeOfOptionalHeader;
WORD Characteristics;
} IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;

DWORD定义如下:

typedef unsigned long DWORD;

并且结构描述表明 TimeDateStamp 是自过去任意时刻以来的秒数,因此它不能为负数。

为什么 C# 代码使用有符号类型 int 来存储那个无符号值?

最佳答案

这是因为 unsigned int 不是符合 CLS 的变量类型,所有 .NET 库都应遵循公共(public)语言规范。

有关 CLS 合规性的更多信息:
http://msdn.microsoft.com/en-us/library/12a7a7h3.aspx

关于c# - 为什么这段处理时间戳的代码使用有符号整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12637494/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com