在Smalltalk(或至少是Squeak和Pharo)中,是否有一种可移植的方法来获取构成整数的字节,从最高有效字节开始,然后是最后一个字节,依此类推,无论字节如何 - 订购跨平台的差异?
答案 0 :(得分:2)
1 to: (31 highBitOfMagnitude) do: [:i | Transcript show: (31 bitAt: i)].
或者类似的东西。
抱歉,我已经读过位而不是字节。所以你必须将这些位捆绑成字节。 假设你的意思是一个字节= 8位,这应该是“可行的”
答案 1 :(得分:0)
你知道可能有很多字节吗?整数可以是任意大小,SmallIntegers作为31位的直接对象(在32位图像中)
答案 2 :(得分:0)
尝试使用digitAt:和digitAt:put ::
(333 digitAt: 1) hex '4D'
答案 3 :(得分:0)
所以要枚举使用:
n digitLength downTo:1 do:[:idx | do something with (n digitAt:idx)]
我不确定,是否存在关于大负数返回的约定,因为Smalltalks倾向于对LargeInts使用符号值表示,而对SmallInts使用2的补码。所以你可能需要检查一下。
警告:对我来说,digitAt:有点坏名字 - 我倾向于把它与“十进制数字”相关联,这是误导性的。
答案 4 :(得分:0)
这取决于您的号码的表示方式。如果您只想获得数字的数字,您可以执行类似
的操作12345 printString do: [ :c | "Your code to manipulate the digits here" ]
分享并享受。