簡體   English   中英

如何在 Ruby 中將整數拆分為 2 字節二進制文件?

[英]How do I split an integer into 2 byte binary in Ruby?

准備好 C# 代碼將整數拆分為 2 個字節,如下所示,需要在 Ruby 中重新編寫相同的代碼-

int seat2 = 65000;

// 拆分成兩個字節

    byte seats = (byte)(seat2 & 0xFF); // lower byte
    byte options = (byte)((seat2 >> 8) & 0xFF); // upper byte

下面是上面的輸出

輸出座位 => 232 個選項 => 253

// 合並回整數

        seat2 = (options << 8) | seats;

請建議任何人有任何解決方案可以用 Ruby 重寫上述內容

您編寫的代碼只需很少修改即可在 Ruby 中正常運行。

你可以簡單地嘗試:

seat2 = 65000
seat2 & 0xFF
# => 232
(seat2 >> 8) & 0xFF
# => 253

另一種方法是使用packunpack

[65000].pack('S').unpack('CC')
# => [232, 253]
[232, 253].pack('CC').unpack('S')
# => [65000]

我相信 Ruby 中二進制轉換最慣用的方法是Array#packString#unpack (就像在Eric 的回答中一樣)。

此外,您還可以選擇將Numeric#divmod與 256(2^8,字節大小)一起使用:

> upper, lower = 65000.divmod(256)
# => [253, 232]
> upper
# => 253
> lower
# => 232

在這種情況下,要獲得正確的字節,您的整數不應超過 65535 (2^16-1)。

另一個:

lower, upper = 65000.digits(256)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM