将整数拆分并存储为两个字节

Posted

技术标签:

【中文标题】将整数拆分并存储为两个字节【英文标题】:Split and store an integer into two byte 【发布时间】:2021-03-01 22:57:07 【问题描述】:

我正在开发嵌入式系统,我只有 2 字节的存储空间。我需要在这 2 个字节中存储一个 JSON 响应。 JSON 响应是一个包含 2 位数字的字符串。如何将字符串转换为无符号整数拆分并保存到这 2 个字节中。我正在使用 C#:

var 结果 = "16";

我需要将其转换并存储为 2 个字节。

【问题讨论】:

var x = short.Parse(results)? 所以我做了这个操作。一个短是2个字节。我需要能够将其拆分并保存为 2 个字节的数据,而这些字节不在一起。他们是分开的。所以通过拆分,我可以将数据保存在这 2 个字节的插槽中 ... 后跟var b1 = (byte)(x & 0xFF); var b2 = (byte)(x >> 8); 这能回答你的问题吗? Good way to convert between short and bytes? 你的数字是十进制还是十六进制? 【参考方案1】:

由于您的值只有 2 位长,您只需要 1 个字节来存储它。 您只需调用 Byte.Parse("16") ,您将获得 16 作为一个字节。 然后,您可以将字节存储在任何您想要的位置。

【讨论】:

【参考方案2】:

@TheBlueOne 所说的 - 一个两位数,即使十六进制只需要 1 个字节 - 但对于更大的数字,您可以使用 BitConverter.GetBytes.

var s2 = "FF01"; 
var n = Convert.ToUInt16(s2, 16); 
var bytes = BitConverter.GetBytes(n);
//bytes[0] = 1
//bytes[1] = 255

【讨论】:

以上是关于将整数拆分并存储为两个字节的主要内容,如果未能解决你的问题,请参考以下文章

Telegraf/InfluxDB - 将整数拆分为位或布尔值

如何阅读管道分隔线 |来自一个文件并在两个不同的 ArrayList 中拆分整数

将 4 个字节转换为无符号 32 位整数并将其存储在 long

整数拆分

应用按位与操作,分离字节

如何将一个 XMM 128 位寄存器拆分为两个 64 位整数寄存器?