<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xml:base="https://www.webmaster-forums.net/crss/node/1023778" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title></title>
    <link>https://www.webmaster-forums.net/crss/node/1023778</link>
    <description></description>
    <language>en</language>
          <item>
    <title></title>
    <link>https://www.webmaster-forums.net/serverside-scripting/c-vb-help#comment-1145975</link>
    <description> &lt;p&gt;I&#039;ve just finished a few tests, and I believe I have a working function now. Here&#039;s the code:&lt;br /&gt;
&lt;div class=&quot;codeblock&quot;&gt;&lt;code&gt;Public Function ChecksumString(ByVal strData As String)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim check As Integer&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim sum As Integer&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim i As Byte&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim chars() As Byte&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim char As Byte&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#039;base value for Check&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; check = &amp;amp;HA55A&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sum = 0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; chars = StrConv(strData, vbFromUnicode)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; For i = 0 To UBound(chars)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; char = chars(i)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sum = sum + (char Xor (i And &amp;amp;HFF))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sum = sum And &amp;amp;HFFFF&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; check = check + sum&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; check = (((check And &amp;amp;HFFFE) \ 2) And &amp;amp;H7FFF) Or ((check And 1) * &amp;amp;H8000)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ChecksumString = check&lt;br /&gt;End Function&lt;/code&gt;&lt;/div&gt;&#039;&lt;br /&gt;
The last hurdle was the fact that check was a signed integer, and the integer division is an arithmatic shift right rather than a logic shift. (I haven&#039;t found a way to make unsigned integers in VB.)&lt;/p&gt;
 </description>
     <pubDate>Thu, 19 Feb 2004 07:37:35 +0000</pubDate>
 <dc:creator>Mark Hensler</dc:creator>
 <guid isPermaLink="false">comment 1145975 at https://www.webmaster-forums.net</guid>
  </item>
  <item>
    <title></title>
    <link>https://www.webmaster-forums.net/serverside-scripting/c-vb-help#comment-1145927</link>
    <description> &lt;p&gt;This is what I have so far. Neither method is producing the correct results (but both the same wrong result at least). I think it&#039;s getting close, but it&#039;s hard to tell.&lt;/p&gt;
&lt;p&gt;I&#039;m questioning this line of code:&lt;br /&gt;
check = ((check \ 2) And &amp;amp;H7FFF) Or ((check And 1) * &amp;amp;H8000)&lt;/p&gt;
&lt;p&gt;Using a test string &quot;55&quot;, this VB function returns hex E999. The correct checksum is hex 6998. The difference being hex 8001... the first and last bit. &lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;codeblock&quot;&gt;&lt;code&gt;Public Function ChecksumString(ByVal strData As String)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim check As Integer&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim sum As Integer&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim i As Byte&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim chars() As Byte&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim char As Byte&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#039;just for use while designing function&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim method&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; method = 1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#039;base value for Check&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; check = &amp;amp;HA55A&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sum = 0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; chars = StrConv(strData, vbFromUnicode)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; If method = 1 Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For i = 0 To UBound(chars)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; char = chars(i)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MsgBox (Chr(char) &amp;amp; &amp;quot; &amp;quot; &amp;amp; Hex(char))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sum = sum + (char Xor (i And &amp;amp;HFF))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sum = sum And &amp;amp;HFFFF&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; check = check + sum&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; check = ((check \ 2) And &amp;amp;H7FFF) Or ((check And 1) * &amp;amp;H8000)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For i = 0 To Len(strData) - 1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; char = CByte(Asc(Mid(strData, i + 1, 1)))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MsgBox (Chr(char) &amp;amp; &amp;quot; &amp;quot; &amp;amp; Hex(char))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sum = sum + (char Xor (i And &amp;amp;HFF))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sum = sum And &amp;amp;HFFFF&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; check = check + sum&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; check = ((check \ 2) And &amp;amp;H7FFF) Or ((check And 1) * &amp;amp;H8000)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ChecksumString = check&lt;br /&gt;End Function&lt;/code&gt;&lt;/div&gt;&#039;&lt;/p&gt;
 </description>
     <pubDate>Wed, 18 Feb 2004 18:13:09 +0000</pubDate>
 <dc:creator>Mark Hensler</dc:creator>
 <guid isPermaLink="false">comment 1145927 at https://www.webmaster-forums.net</guid>
  </item>
  <item>
    <title></title>
    <link>https://www.webmaster-forums.net/serverside-scripting/c-vb-help#comment-1145923</link>
    <description> &lt;p&gt;I know VB pretty well and could probably help you if you reposted the code and added in some comments as to what it is actually doing in C, as I&#039;m not good with C.&lt;/p&gt;
&lt;p&gt;-Greg&lt;/p&gt;
 </description>
     <pubDate>Wed, 18 Feb 2004 16:57:03 +0000</pubDate>
 <dc:creator>Greg K</dc:creator>
 <guid isPermaLink="false">comment 1145923 at https://www.webmaster-forums.net</guid>
  </item>
  </channel>
</rss>
