【问题标题】:Bytes of different file to -127 to 127不同文件的字节到 -127 到 127
【发布时间】:2012-11-01 11:20:19
【问题描述】:

我要去一个字节数组的 Web 服务,问题是字节的值从 0-255 并且 Web 服务只接受 -127 到 127 的值,有人可以帮助我吗?

一个sn-p的代码是这样的:

BytesFile : array [1..66000] of Byte;

AssignFile(fileB,'C:\img.jpg');
Reset(fileB,1);
BlockRead(fileB, BytesFile , SizeOf(BytesFile ), NumRead);

【问题讨论】:

  • 附带说明,您不应该使用 AssignFile、Reset 和 BlockRead,它们已经过时了。查找 TFileStream 并使用它。
  • 您的代码在只读文件(例如网络或 CD-ROM)上会失败。有全局 FileMode 变量。在ReSet 之前将其设置为零以打开只读或将其设置为二以打开读写(默认)。但是最好使用现代工具,例如 TFileStream 或 IOUTils 单元或 David 的快速文件阅读器类。 stackoverflow.com/questions/1642220

标签: arrays delphi service web byte


【解决方案1】:

-127-127 基本上是一个有符号字节。

为此,您可以在 Delphi 中使用 ShortInt,请参见此处:

http://www.delphibasics.co.uk/RTL.asp?Name=ShortInt

【讨论】:

  • 抱歉是第一次使用 Byte,对于我的 ShortInt 应用我开头引用的概念有点困惑?
  • 是的。字节是 0 到 255 之间的无符号整数。 ShortInt 基本上是有符号的等价物,这意味着您的范围为 -128 到 +127。正如下面的 bummi 所说,这完全是关于解释。
  • 请原谅我的无知,但我不知道如何将这个概念应用到我的代码中(在第一篇文章中)。
  • 奇怪的是,当我尝试使用 Range Check Error 的图像 (jpg) 时,能告诉我它是什么吗?
  • 这取决于你用它做什么。您应该能够很好地阅读图像。虽然就像我说的,我不会为此使用 AssignFile/BlockRead。
【解决方案2】:

字节就是字节,这是解释的问题

var
 s:ShortInt;
 b:Byte;
begin
   s := -1;
   b := s;
   Showmessage(IntToStr(b));
   s := -127;
   b := s;
   Showmessage(IntToStr(b));

end;

【讨论】:

    【解决方案3】:

    这似乎是有符号或无符号数据类型的问题。
    如果可能,尝试转换为带符号的字节类型,即 ShortInt:Link
    或者尝试从一开始就使用 ShortInt。

    【讨论】:

      猜你喜欢
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-12
      • 2013-07-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多