将2个字节转换为小整数

时间:2018-01-11 22:23:33

标签: delphi

我需要从2个字节中生成一个小的整数数据类型,我的代码失败了 结果= 0

std::unordered_map<std::pair<size_t, size_t>, add_func*>fnsAdd = boost::assign::map_list_of
    (std::make_pair(typeid(integer_value).hash_code(), typeid(integer_value).hash_code()), (add_func*)&integer_value_integer_value_Add)
    (std::make_pair(typeid(integer_value).hash_code(), typeid(real_value).hash_code()), (add_func*)&integer_value_real_value_Add)

1 个答案:

答案 0 :(得分:5)

我无法重现您描述的问题。您展示的代码对我来说很好。

但是,您根本不需要pointer变量:

function BytesToSmallInt(B0, B1: Byte): SmallInt;
var
  Number: SmallInt;
  small: array [0 .. 1] of Byte absolute Number;
begin
  small[0] := B1;
  small[1] := B0;
  Result := Number;
end;

你甚至可以摆脱阵列:

function BytesToSmallInt(B0, B1: Byte): SmallInt;
begin
  Result := (Smallint(B0) shl 8) or B1;
end;