- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我试图将文件读入记录,指定如下:
type U32 is new Interfaces.Unsigned_32;
type U16 is new Interfaces.Unsigned_16;
type U8 is new Interfaces.Unsigned_8;
type Rotation_t is range 0 .. 3 with Size => 2;
type Tilenum_t is new Interfaces.Unsigned_8;
type Padding_t is range 0 .. 7 with Size => 3;
type Tile is record
Tilenum : Tilenum_t;
XFlipped : Boolean;
YFlipped : Boolean;
Rotation : Rotation_t;
TriFlipped : Boolean;
Padding : Padding_t;
Height : U8;
end record with Size => 24;
for Tile use
record
-- first byte
Tilenum at 0 range 0 .. 7; -- 1111 1111 0000 0000 0000 0000
-- second byte
XFlipped at 0 range 8 .. 8; -- 0000 0000 1000 0000 0000 0000
YFlipped at 0 range 9 .. 9; -- 0000 0000 0100 0000 0000 0000
Rotation at 0 range 10 .. 11; -- 0000 0000 0011 0000 0000 0000
TriFlipped at 0 range 12 .. 12; -- 0000 0000 0000 1000 0000 0000
Padding at 0 range 13 .. 15; -- 0000 0000 0000 0111 0000 0000
-- third byte
Height at 0 range 16 .. 23; -- 0000 0000 0000 0000 1111 1111
end record;
for Tile'Bit_Order use System.Low_Order_First;
for Tile'Scalar_Storage_Order use System.Low_Order_First;
请注意,信息一次传入 3 个字节。在磁盘上,我有:
# hexdump -C
# we are only interested in second line: first one is metadata
00000000 6d 61 70 20 0a 00 00 00 65 00 00 00 50 00 00 00 |map ....e...P...|
00000010 11 00 00 11 00 00 11 00 00 11 00 00 11 00 00 11 |................|
现在,读取此文件 (Tile'Read (...)
) 会产生翻转的结果:
# ada reads:
Tilenum= 17 XFlipped=FALSE YFlipped=FALSE Rotation= 1 TriFlipped=FALSE Padding= 0 Height= 17
Tilenum= 0 XFlipped=FALSE YFlipped=TRUE Rotation= 0 TriFlipped=FALSE Padding= 1 Height= 0
Tilenum= 0 XFlipped=TRUE YFlipped=FALSE Rotation= 0 TriFlipped=TRUE Padding= 0 Height= 0
Tilenum= 17 XFlipped=FALSE YFlipped=FALSE Rotation= 1 TriFlipped=FALSE Padding= 0 Height= 17
# same as above, in numerical form:
0x11 [b:0001 0000] 0x11
0x00 [b:0100 0001] 0x00
0x00 [b:1000 1000] 0x00
0x11 [b:0001 0000] 0x11
虽然我希望结果是:
0x11 0 0
0x11 0 0
0x11 0 0
...
我不确定为什么 0x11
被分成 2 个半字节 ([0001 0001]
),它们在两个不同的时间被读取。 (我希望字节可以简单地翻转但作为一个整体保留)。
我推断我正在做一些非常错误的事情。
有什么帮助吗?
最佳答案
我不知道0x11
和0x00
是什么意思。向 Ada 提问时,请使用 Ada 符号和术语。
根据 ARM 13.13.2(9/3) ,“对于复合类型,每个组件的 Write 或 Read 属性按规范顺序调用,这是……记录的位置聚合顺序。”换句话说,做
T : Tile;
...
Tile'Read (F, T);
相当于
declare
F1 : Tilenum_T;
begin
Tilenum_T'Read (F, F1);
T.Tilenum := F1;
end;
declare
F2 : Boolean;
begin
Boolean'Read (F, F2);
T.Xflipped := F2;
end;
等等。这些对 Read
的调用中的每一个都至少读取一个流元素(通常是一个字节),因此 Tile'Read
读取 7 个字节。
可以重新定义 Tile'Read
使其工作。定义更简单也更有可能成功
type Tile_As_Bytes is array (1 .. 3) of U8 with Size => 24;
将 3 个字节读入 Tile_As_Bytes
对象,并使用 Ada.Unchecked_Conversion
将其转换为 Tile
。
关于ada - 读取字节流记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74107299/
我想执行一堆 WebRequest,但设置了可以同时启动的阈值。 我遇到了这个LimitedConcurrencyTaskScheduler example并尝试像这样使用它 scheduler =
初始情况 我正在开发 .NET Framework 4.0、C#、Winform 应用程序。应用程序将在 GridView 中列出(并测试)WebServiceOperations(目前有 60 个
我有一个具有 5 个读取和 5 个写入容量的发电机表。在这张表中,我有两条记录。 然后我决定通过一次推送大量写入(一次突发大约 4000 条记录)看看我会得到什么样的错误响应。蓝色的“已消耗”线直接越
我在限制作业和“挂起”或“失败”的作业方面遇到了麻烦。这基本上就是我正在尝试做的事情。 $allServers = Import-Csv "C:\temp\input.csv" $job = $all
我正在编写一个运行微 Controller 仿真器的C++程序。运行模拟器的线程在这样的循环中这样做: while(should_run) { simulator->RunSingleClockC
我有这个简单的代码,它: 创建 IObservable 采样半秒 使用 ThreadPool 调度程序订阅它 使用 SynchronizationContext 观察它 代码如下: private v
我正在尝试翻译一些 C# 代码,它一次创建 N 个线程并在每个线程中运行一个函数。 我有两个问题: -如何限制一次N个线程? -当我在我的主要方法中引用静态整数 FastestMemory 和 Slo
我有一个splitpane我的 React 项目中的组件,在调整 Pane 大小时将对其宽度使用react并更改内容。拆分 Pane 组件具有以下事件监听器... componentDidMo
使用 urllib2 时是否可以轻松限制 kbps?如果是,如果您能指导我使用任何代码示例或资源,我们将不胜感激。 最佳答案 urllib 模块中有urlretrieve(url, filename=
使用 urllib2 时是否可以轻松限制 kbps?如果是,如果您能指导我使用任何代码示例或资源,我们将不胜感激。 最佳答案 urllib 模块中有urlretrieve(url, filename=
我正在为 Android Phone 构建应用程序,但遇到了一些奇怪的“节流”。我相信这是因为正在调用信号量来停止应用程序正在做的任何事情来处理手机中的其他内容。虽然我不是积极的。 我很好奇是否有一种
我使用 Charles (4.0.2) 作为代理服务器来测试我的移动应用程序,它依赖于 WKWebView 内部的 WebSockets。我正在尝试模拟一种情况,在这种情况下,用户会短暂地体验到他们的
我有一个 request-promise向 API 发出请求的函数。我受此 API 的速率限制,并且不断收到错误消息: Exceeded 2 calls per second for api clie
我正在使用网络服务发送 100 个 http 帖子。但是,该服务每秒只允许 5 个。我想知道 usleep 命令是否是执行此操作的最佳方法。例如: foreach($JSONarray['DATABA
我在随机时间以高频率接收数据对象,并且需要使用这些更新 JavaFX GUI。但是,我不想用大量的可运行对象填充 javafx 事件队列(我使用 Platform.RunLater)。 我一直在思考如
假设我有一个即时消息应用程序,每次收到消息时它都会发出哔声。我想 debounce 哔哔声,但我想在第一条消息到达时播放哔哔声,而不是为后续消息播放(在时间跨度内,比如 2 秒)。 另一个示例可能是:
所以我现在有: App.html import { debounce } from 'lodash' export default { data () { na
我将 Highstock.js 更新到 1.3 并注意到 afterSetExtemes 事件在每次拖动事件时触发,而不是 dragend/mouseup。我正在通过 ajax 更新主要系列,但现在这
我已经在我的 pod 的所有容器上设置了 CPU 和 Memory Requests=Limits,以使其符合保证服务质量类的资格。现在,查看过去 6 小时同一 Pod 的这些 CPU 使用率和 CP
我将 Highstock.js 更新到 1.3 并注意到 afterSetExtemes 事件在每次拖动事件时触发,而不是 dragend/mouseup。我正在通过 ajax 更新主要系列,但现在这
我是一名优秀的程序员,十分优秀!