c# - 为什么将 4 个字节转换为 int 时我没有得到正确的值
问题描述
所以我目前正在学习小端、大端、十六进制和二进制。目前我有这个字节数组,以十六进制表示new byte[] { 0x06, 0x1B, 0x0A, 0xFF };
,如果我尝试获取 int 值,通过使用 little endian 读取它
int theValue = BitConverter.ToInt32(arr.Reverse().ToArray(), 0);
它给了我正确的价值,即102,435,583
但是..如果我删除.Reverse().ToArray()
又名读取它为大端,它会给我一个负值,因为从技术上讲它超过了整数的最大值。我想要得到的值是4,283,488,352
..我想我可以通过这样做将它转换为一个 uint,所以
uint theValue = (uint)BitConverter.ToInt32(arr, 0);
我得到了这个值4,278,852,358
,你可以看到它是不正确的..它很接近但不正确,我有人告诉我这是因为有些东西溢出了,但我不确定这意味着什么。
为什么我没有得到价值4,283,488,352
,而是不同的(错误的)价值4,278,852,358
解决方案
推荐阅读
- android - DatePickerDialog 月份显示为数字(Jan 为 1)
- flutter - 无法使用 firebase_messaging 在 iOS 上的 Flutter 应用中订阅主题
- c# - 使用反射获取类列表的类成员
- c++ - 调试c++时如何在vscode中添加额外的源目录
- javascript - 在 Javascript 中重新格式化字符串
- laravel - 为什么获取数据在刀片中不起作用但在 dd 时起作用?
- angular - 改变了角材料的进口
- if-statement - 我想在序列号中排除空白
- python - 如何使用 spaCy 检查文档中是否存在令牌?
- typescript - 如何使用带有 TS 的玩笑来模拟 EventSource(尝试了大部分模拟策略)